Re: [PHP-DB] 'the missing character'

2001-05-16 Thread Szii

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]




Re: [PHP-DB] 'the missing character' YIKES

2001-05-16 Thread Szii

Oh, btw, if you're splitting along chars, make sure you don't munge your
data TOO much.

Breaking mid-word can be annoying, esp if it's to be displayed as a page.

I have a splitter I wrote that'll either break along word boundries, or
along sentance
boundries.

Haven't pounded it yet, but it seems to work...

-Szii

- Original Message -
From: Jimmy Brake [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, May 15, 2001 9:58 PM
Subject: [PHP-DB] 'the missing character' YIKES


 I forgot to detail the problem, I loose a character every once in a while
basically every 3500 characters.

 Jimmy Brake
 Cool Tools and Stuff
 Critical Path Inc.

 Making your job easier



 --
 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]