Иногда нужно, чтобы скрипт PHP формировал длинную строку в несколько коротких, сохраняя при этом целостность слов. Такая необходимость может возникнуть при форматировании некоего текста для печати или для email, или когда нужно вывести предварительно отформатированный текст на веб странице с помощью элемента pre.
PHP имеет практичную функцию wordwrap() для решения таких задач. В данном уроке рассматривается работа с функцией wordwrap().
Основной синтаксис wordwrap()
В большинстве случаев нужно просто передать строку в функцию wordwrap(), и она вернёт сформированный текст:
$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.";
echo "<pre>" . wordwrap( $myString ) . "</pre>";
Выше приведённый код выводит:
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.
По умолчанию функция wordwrap() использует ширину колонки в 75 символов. Это означает, что строка будет не длиннее 75 символов.
Задаём ширину колонки
Чтобы задать ширину колонки отличной от 75 символов, нужно передать значение ширины в качестве второго аргумента фунгкции wordwrap():
$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.";
echo "<pre>" . wordwrap( $myString, 40 ) . "</pre>";
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.
Используем другой символ переноса строки
Обычно функция wordwrap() выполняет перенос строки с помощью вставки символа новой строки ("\n") там, где нужно. Однако, вы можете установить тот символ, который нужно использовать. Для этого новый символ переноса строки передаётся в качестве третьего аргумента функции wordwrap().
Например, если текст формируется для использования на веб странице и элемент pre не будет использоваться для отображения предварительно форматированного текста, то можно осуществлять перенос строки с помощью элемента HTML<br />:
$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.";
echo wordwrap( $myString, 40, "<br />" );
Формирование очень длинных слов
Что произойдёт, если текст будет содержать слово, длина которого превышает ширину колонки? По умолчанию строка будет иметь длину больше ширины колонки:
myString = "This text contains a very very loooooooooooooooooooong word.";
echo "<pre>" . wordwrap( $myString, 10 ) . "</pre>";
This text
contains a
very very
loooooooooooooooooooong
word.
Чтобы изменить стиль работы с длинными словами нужно передать четвёртым аргументом значение true в функцию wordwrap(). В этом случае все слова, длина которых будет превышать ширину колонки будут прерываться символом переноса строки, а остаток слова будет продолжаться на следующей строчке:
myString = "This text contains a very very loooooooooooooooooooong word.";
echo "<pre>" . wordwrap( $myString, 10, "\n", true ) . "</pre>";
This text
contains a
very very
looooooooo
oooooooooo
ong word.
Использование функции wordwrap() помогает формировать текст так, что его отображение имеет прогнозируемый вид, без сюрпризов.