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