Все ленты — последние статьи

Формирование текста с использованием функции PHP wordwrap()

Иногда нужно, чтобы скрипт PHP формировал длинную строку в несколько коротких, сохраняя при этом целостность слов. Такая необходимость может возникнуть при форматировании некоего текста для печати или для email, или когда нужно вывести предварительно отформатированный текст на веб странице с помощью элемента pre.

PHP имеет практичную функцию wordwrap() для решения таких задач. В данном уроке рассматривается работа с функцией wordwrap().
Основной синтаксис wordwrap()

 

В большинстве случаев нужно просто передать строку в функцию wordwrap(), и она вернёт сформированный текст:
1 $myString = "Mr. Bennet was so odd a mixture of quick parts, sarcastic humour, reserve, and caprice, that the experience of three-and-twenty years had been insufficient to make his wife understand his character.";
2 echo "<pre>" . wordwrap( $myString ) . "</pre>";

Выше приведённый код выводит:
1 Mr. Bennet was so odd a mixture of quick parts, sarcastic humour, reserve,
2 and caprice, that the experience of three-and-twenty years had been
3 insufficient to make his wife understand his character.

По умолчанию функция wordwrap() использует ширину колонки в 75 символов. Это означает, что строка будет не длиннее 75 символов.
Задаём ширину колонки

Чтобы задать ширину колонки отличной от 75 символов, нужно передать значение ширины в качестве второго аргумента фунгкции wordwrap():
1 $myString = "Mr. Bennet was so odd a mixture of quick parts, sarcastic humour, reserve, and caprice, that the experience of three-and-twenty years had been insufficient to make his wife understand his character.";
2 echo "<pre>" . wordwrap( $myString, 40 ) . "</pre>";
1 Mr. Bennet was so odd a mixture of quick
2 parts, sarcastic humour, reserve, and
3 caprice, that the experience of
4 three-and-twenty years had been
5 insufficient to make his wife understand
6 his character.
Используем другой символ переноса строки

Обычно функция wordwrap() выполняет перенос строки с помощью вставки символа новой строки ("n") там, где нужно. Однако, вы можете установить тот символ, который нужно использовать. Для этого новый символ переноса строки передаётся в качестве третьего аргумента функции wordwrap().

Например, если текст формируется для использования на веб странице и элемент pre не будет использоваться для отображения предварительно форматированного текста, то можно осуществлять перенос строки с помощью элемента HTML<br />:
1 $myString = "Mr. Bennet was so odd a mixture of quick parts, sarcastic humour, reserve, and caprice, that the experience of three-and-twenty years had been insufficient to make his wife understand his character.";
2 echo wordwrap( $myString, 40, "<br />" );
Формирование очень длинных слов

Что произойдёт, если текст будет содержать слово, длина которого превышает ширину колонки? По умолчанию строка будет иметь длину больше ширины колонки:


myString = "This text contains a very very loooooooooooooooooooong word.";
echo "<pre>" . wordwrap( $myString, 10 ) . "</pre>";

1 This text
2 contains a
3 very very
4 loooooooooooooooooooong
5 word.

Чтобы изменить стиль работы с длинными словами нужно передать четвёртым аргументом значение true в функцию wordwrap(). В этом случае все слова, длина которых будет превышать ширину колонки будут прерываться символом переноса строки, а остаток слова будет продолжаться на следующей строчке:
1 myString = "This text contains a very very loooooooooooooooooooong word.";
2 echo "<pre>" . wordwrap( $myString, 10, "n", true ) . "</pre>";
1 This text
2 contains a
3 very very
4 looooooooo
5 oooooooooo
6 ong word.

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