function wrap_lines ($str, $line_length) { $r = ''; $words = preg_split('/\s/', $str); $cur_pos = 0; foreach($words as $word) { if (($cur_pos + strlen($word) + 1) > $line_length) { $cur_pos = 0; $r .= '<br>'; } else { $r .= ' '; $cur_pos++; } $r .= $word; $cur_pos += strlen($word); } return $r; }
On Wed, 24 Apr 2002, Kirk Babb wrote: > I have a feeling I am making this much harder than it really is! I'm a new > programmer, and I am trying to output "x" number of characters per line > without splitting up the words in the string. I want to approach as best as > possible a certain number of characters per line, let's say 80 characters, > and then cycle through the remaining parts of the array to reconstruct the > string in the same manner. > > here is the code with comments: > <?php > $string="Why am I trying to do this crazy stuff when I should know > better?"; > //split the string into an array by spaces > $array=preg_split("[\s]", $string); > // just a test of the preg_split results > // print_r($array); > // $i is the main iteration variable, it iterates the indices of the > array > $i=0; > $count = count($array); > // $container will hold the summed length of the array pieces > $container=0; > // start a while loop, using 20 characters as the limit for the > $container size > while ($container <= 20) { > // $box holds the string length of each piece of the array > $box = strlen($array[$i]); > // $container started out at 0, now the value of $box will be added > to it > $container=$container + $box; > // increment $i and start the while again > $i++; > } > // when the while loop condition is satisfied, start putting the pieces > of the array together > // from $array[0] to $array[$i] > $returned_string=""; > // $j is incremented in the next while loop > $j=0; > //while $j is less than or equal to the value of $i - the last piece of > the array that satisfied our > //20 character limit > while ($j <= $i) { > // add each array piece to $returned_string > $returned_string .= $array[$j] . " "; > $j++; > } > //when this part of the string has been reconstructed, print out the > result > print $returned_string . "<br>"; > ?> > Like I mentioned above, this may be a case of making something much harder > than it really is. I'm still stuck on printing the remaining parts of the > array, and I'd really like to make this a function and just give it the > string and the container length as arguments.....can someone give me some > advice? Or just tell me I'm stupid? > > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php