I don't understand xcount().
Instead of xcount(), why not use strlen()?
Say we have 7100 chars....
If you step through, first pass
$i = 0
$chunk_count = 2
$start = 0
$final = 3500
$text[] is chars 0-3499
second pass
$i = 1 // from $i++
$chunk_count = 2
$start = 3501 // problem is here - note the endpoint of the last pass in
$text[]?
$final = 3499
$text[] is chars 3501-7000 // what happened to char 3500 itself?
Remember that substr() takes a start point, and an offset - not an endpoint.
So after the first pass, you've read in 0-3499 as is correct, but you have
an extraneous if() clause that inc's your start by one, and then adds 3500.
Drop the second if($start == 0) clause which sets $start to 1.
'Luck
-Szii
----- Original Message -----
From: "Jimmy Brake" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, May 15, 2001 9:54 PM
Subject: [PHP-DB] 'the missing character'
> Hi!
>
> Does anyone know of a function in php that will take a chunk of text and
seperate it into 'chunks' preferably returning it in an array?
>
> The reason being is that I have some columns(oracle) that are set to
varchar2(4000) and I have text that is 4000+ AND :-) I cannot change it to
another format.
>
> I was unable to find a chunk maker so I built one.
>
> function chunk_maker($text)
> {
> // have to count the number of characters, if over 3500 characters
need to split into chunks of 3500 characters
> $count = xcount($text);
> if($count > 3500)
> {
> $chunk_count = $count/3500;
> //need to clean up the $chunk_count by removing the
trailing decimals and
> //adding one to the total to make sure we do not loose in
characters
> $chunk_count = floor($chunk_count)+1;
> $i=0;
> $start=0;
> while($i != $chunk_count)
> {
> // err well this helps to make sure we get the
correct amount of characters
> if($start == 0)
> {
> $final = 3500;
> } else {
> $final = 3499;
> }
>
> //now we need to make the chunks and stick them in
an array
>
> $text2[]=substr($text,$start,$final);
>
> // err well this helps to make sure we get the
correct amount of characters
> if($start == 0)
> {
> $start=1;
> }
> $start=$start+3500;
> $i++;
> }
> } else {
> $text2[] = $text;
> }
> return($text2);
> }
>
> function xcount($text)
> {
> global $debug;
> foreach (count_chars($text) as $my_value)
$length=$length+$my_value;
> tracker($length);
> return($length);
> }
>
>
> If I just failed to find the right functions please let me know, otherwise
please help! :-)
>
>
> Jimmy Brake
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]