Как вырезать текст после нескольких символов и получить споры по нескольким строкам?

У меня очень длинный текст, и мне нужно обрезать текст после N символов, чтобы в конце я получил текст, отображаемый в несколько строк без обрезания каких-либо слов;

Итак, если у вас есть текст с длиной 1000 символов, который был сохранен в 1 строку, и мне нужно сократить от 100 до 100 символов, в конце я получу текст на 10 строк.

Я попробовал что-то, но я застрял;

foreach не работает, текст не виден как массив; также, я не удостоверился, что слова остались нетронутыми в моем тесте;

Кто-нибудь пробовал это? Или есть какая-то связь с решением?

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;
}

2 ответа

Решение

Похоже, вам нужно wordwrap,

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

Это позволяет разбить строку на множество частей, не обрезая слова. Затем вы можете отформатировать эти части, как вам нравится.

РЕДАКТИРОВАТЬ

Если вам все еще нужно, чтобы каждая из ваших строк состояла из 100 символов, вы можете использовать str_pad добавить дополнительные пробелы в каждой строке.

Используйте функцию explode(), чтобы получить массив слов из вашей строки.

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

$length = 0;
foreach( $words as $word ) {
  // Your loop code goes here.
}
Другие вопросы по тегам