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

Reply via email to