Ionut Flavius Pogacian
Ionut Flavius Pogacian

Reputation: 4801

How to cut a text after a number of chars and obtain text sporead on multiple rows?

I have a very long text, and I need to cut the text after N chars, so that at the end I obtain a text, rendered on multiple rows, without any of the words being cut;

So, if a have a text with the lenght of a 1000 chars, which has been saved on 1 line, and I need to cut from 100 to 100 chars, at the end, I will get a text spread on 10 lines.

I tryed something, but I got stuck;

foreach does not work, the text is not seen a a array; also, i did not made sure to keep the words intact in my test;

Has anyone tryed this? Or is there any link with solution?

public static function cut_line_after_n_chars($str, $n = 70) {
    $result = '';
    $pos = 0;
    foreach ($str as $c) {
        $pos++;
        if ($pos == $n) {
            $result .= $c + '<br/>';
            $pos = 0;
        }
        else
            $result .= $c;
    }
    return $result;
}

Upvotes: 0

Views: 131

Answers (2)

Daniel B.
Daniel B.

Reputation: 1680

It sounds like you need wordwrap.

http://php.net/manual/en/function.wordwrap.php

This allows you to break a string into an array of pieces without cutting off words. You can then format these pieces as you like.

EDIT

If you still need each of your lines to be 100 characters, you can use str_pad to add extra spaces onto each row.

Upvotes: 4

Serge Kuharev
Serge Kuharev

Reputation: 1052

Use explode() function to get array of words from your string.

$words = explode( ' ', $str );

$length = 0;
foreach( $words as $word ) {
  // Your loop code goes here.
}

Upvotes: 0

Related Questions