Re: chunk_split();

From: Date: Wed, 28 Jan 2004 17:15:57 +0000
Subject: Re: chunk_split();
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-176079@lists.php.net to get a copy of this message
chunk_split();From: Benjamin Trépanier > I am using the chunk_split(); function to separe a > long long text on differents pages. > At this time, I can split the string into x sections of > 2000 characters. > > Now I need to show only the first 2000 . > when user click on page #2, it's reloading and > show the next 2000 characters... If he click the page > 4 button, it's going to the 6000th caracters and it show > his next 2000.. etc... > > How can I split this text on many pages without loosing > any characters?? Maybe the chunk_split function is not > the good one... You'll have to look for the spaces. So you want no more than 2000 characters per page. If you're on page x, then start at character x*2000 and start looping backwards character by character until you find a space. Then grab the text up until that character. "remember" that characters location, too, as you'll need to use that as your starting point on the next page. Something like this: $start = 0; $chars = 2000; $page = array(); $x = 0; $len = strlen($long_text); while($start < $len) { $spot = $start + $chars; if($spot < $len) { while($long_text{$spot--} != ' ') { } } else { $spot = $len; } $page[$x]['start'] = $start; $page[$x]['chars'] = $spot - $start + 1; $x++; $start = $spot + 1; } Now you'll have your start and number of characters for each page. For example to show page zero: echo substr($long_text,$page[0]['start'],$page[0]['chars']); To show page 5 echo substr($long_text,$page[5]['start'],$page[5]['chars']); etc. Throw $page into a session variable so you only have to calculate it once. Also, if you're pulling this text from a database or file, combine it with the database and/or file functions so that you only extract/read the part of the text your after instead of the whole text each time. Hope that helps. ---John Holmes...

« previous php.general (#176079) next »