- Подробности
-
Категория: PHP. Синтаксис
Иногда нужно, чтобы скрипт 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() помогает формировать текст так, что его отображение имеет прогнозируемый вид, без сюрпризов.