- Переносы строк и тег BR в PHP
- Замена переносов строк на BR
- Результат:
- Результат:
- Удаление лишних тегов
- Удаление в начале строки
- Результат:
- Удаление в конце строки
- Результат:
- Удаление перед закрывающим тегом
- Результат:
- Результат:
- Результат:
- echo
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- Как правильно сделать перенос строки на PHP: все способы
- Использование спецсимволов \n, \r, \r\n
- Использование функции nl2br
- Универсальный перенос при помощи константы PHP_EOL
- Вывод. Какой метод правильнее будет использовать
Переносы строк и тег BR в PHP
В PHP за перенос текста отвечают управляющие символы \r (возврат каретки) и \n (перевод строки), причем в разных операционных системах (на которых работает сервер) они применяются в разных комбинациях:
Поэтому в место распространенного \r\n рекомендуется использовать константу PHP_EOL для кроссплатформенности кода.
Замена переносов строк на BR
С помощью функции str_replace() :
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper. Sed porta justo sed nibh elementum condimentum."; $text = str_replace(PHP_EOL, '
', $text); echo $text;
Результат:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Proin blandit magna eu tempus ullamcorper.
Sed porta justo sed nibh elementum condimentum.
Функция nl2br() добавляет тег
, но оставляет символы переносов строк.
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper. Sed porta justo sed nibh elementum condimentum."; $text = nl2br($text, false); echo $text;
Результат:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Proin blandit magna eu tempus ullamcorper.
Sed porta justo sed nibh elementum condimentum.
Если через функцию nl2br() пропустить текст несколько раз, то количество
с каждым разом будет увеличиваться и получится следующий результат:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Proin blandit magna eu tempus ullamcorper.
Sed porta justo sed nibh elementum condimentum.
Чтобы этого избежать нужно перед вызовом nl2br() применять обратную функцию br2nl() :
function br2nl($text) < return preg_replace('//i', '', $text); >
Удаление лишних тегов
Удаление
в начале строки
$text = '
Тег
в начале строки.'; $text = preg_replace('/^()+/i', '', $text); echo $text;
Результат:
Удаление
в конце строки
$text = 'Тег
в конце строки.
'; $text = preg_replace('/()+$/i', '', $text); echo $text;
Результат:
Удаление
перед закрывающим тегом
$text = 'Лишний
в конце параграфа. '; $text = preg_replace('/()+([\s+])?()$/i', '$3', $text); echo $text;
Результат:
Еще момент, обычно в WYSIWYG редакторах пустая строка выполняется элементом
, следующий код удаляет данные переносы в конце текста.
$text = ' Пустые строки в конце текста.
'; $text = preg_replace('/( [\s+]?)+$/i', '', $text); $text = trim($text); echo $text;
Результат:
Пустые строки в конце текста.
Удаление повторяющихся
$text = 'Текст
с
множеством
переносовстрок.'; $text = preg_replace('/()/i', '
', $text); echo $text;
Результат:
Текст
с
множеством
переносов
строк.
echo
Выводит одно или несколько выражений без дополнительных символов новой строки или пробелов.
На самом деле, echo — это не функция, а языковая конструкция. Её аргументы — это список выражений, следующих за ключевым словом echo , разделённых запятыми и не ограниченных круглыми скобками. В отличие от некоторых других языковых конструкций, echo не имеет никакого возвращаемого значения, поэтому её нельзя использовать в контексте выражения.
echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тегом. Этот сокращённый синтаксис работает даже с отключённым параметром конфигурации short_open_tag.
Единственное отличие от print в том, что echo принимает несколько аргументов и не имеет возвращаемого значения.
Список параметров
Одно или несколько строковых выражений для вывода, разделённых запятыми. Нестроковые значения будут преобразованы в строки, даже если включена директива strict_types .
Возвращаемые значения
Функция не возвращает значения после выполнения.
Примеры
Пример #1 Примеры использования echo
echo «echo не требует скобок.» ;
?php
// Строки можно передавать по отдельности как несколько аргументов или
// объединять вместе и передавать как один аргумент.
echo ‘Эта ‘ , ‘строка ‘ , ‘сформирована ‘ , ‘из ‘ , ‘нескольких параметров.’ , «\n» ;
echo ‘Эта ‘ . ‘строка ‘ . ‘сформирована ‘ . ‘с ‘ . ‘помощью конкатенации.’ . «\n» ;
// Новая строка или пробел не добавляются; пример ниже выведет «приветмир» в одну строку
echo «привет» ;
echo «мир» ;
// То же, что и выше
echo «привет» , «мир» ;
echo «Эта строка занимает
несколько строк. Новые строки также
будут выведены» ;
echo «Эта строка занимает\nнесколько строк. Новые строки также\nбудут выведены.» ;
// Аргументом может быть любое выражение, производящее строку
$foo = «пример» ;
echo «пример — это $foo » ; // пример — это пример
$fruits = [ «лимон» , «апельсин» , «банан» ];
echo implode ( » и » , $fruits ); // лимон и апельсин и банан
// Нестроковые выражения приводятся к строковым, даже если используется declare(strict_types=1)
echo 6 * 7 ; // 42
// Поскольку echo не работает как выражение, следующий код некорректен.
( $some_var ) ? echo ‘true’ : echo ‘false’ ;
// Однако следующие примеры будут работать:
( $some_var ) ? print ‘true’ : print ‘false’ ; // print также является конструкцией, но
// это допустимое выражение, возвращающее 1,
// поэтому его можно использовать в этом контексте..
echo $some_var ? ‘true’ : ‘false’ ; // сначала выполняется выражение, результат которого передаётся в echo
?>
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций или именованных аргументов.
Замечание: Использование с круглыми скобками
Заключение одного аргумента в echo в круглые скобки не вызовет синтаксической ошибки и создаст синтаксис, который выглядит как обычный вызов функции. Однако это может ввести в заблуждение, потому что круглые скобки на самом деле являются частью выводимого выражения, а не частью самого синтаксиса echo .
echo( «привет» );
// также выведет «привет», потому что («привет») является корректным выражением
echo( 1 + 2 ) * 3 ;
// выведет «9»; круглые скобки приводят к тому, что сначала вычисляется 1+2, а затем 3*3
// оператор echo видит всё выражение как один аргумент
echo «привет» , » мир» ;
// выведет «привет мир»
echo( «привет» ), ( » мир» );
// выведет «привет мир»; круглые скобки являются частью каждого выражения
echo( «привет» , » мир» );
// Выбросит ошибку синтаксического анализа, потому что («привет», «мир») не является корректным выражением.
?>
Передача нескольких аргументов в echo может избежать осложнений, связанных с приоритетом оператора конкатенации в PHP. Например, оператор конкатенации имеет более высокий приоритет, чем тернарный оператор, а до PHP 8.0.0 имел тот же приоритет, что и сложение и вычитание:
// Ниже выражение ‘Привет, ‘ . isset($name) вычисляется первым
// и всегда имеет значение true, поэтому аргумент для echo всегда равен $name
echo ‘Привет, ‘ . isset( $name ) ? $name : ‘Джон Доу’ . ‘!’ ;
?php
// Предполагаемое поведение требует дополнительных скобок
echo ‘Привет, ‘ . (isset( $name ) ? $name : ‘Джон Доу’ ) . ‘!’ ;
// В PHP до 8.0.0 ниже выведется «2», а не «Сумма: 3».
echo ‘Сумма: ‘ . 1 + 2 ;
// Опять же, добавление круглых скобок обеспечивает предполагаемый порядок выполнения.
echo ‘Сумма: ‘ . ( 1 + 2 );
Если передано несколько аргументов, скобки не требуются для обеспечения приоритета, потому что каждое выражение является отдельным:
echo «Привет, » , isset( $name ) ? $name : «Джон Доу» , «!» ;
?php
Смотрите также
- print — Выводит строку
- printf() — Выводит отформатированную строку
- flush() — Сброс системного буфера вывода
- Способы работы со строками
Как правильно сделать перенос строки на PHP: все способы
Тег br используется для вставки разрыва строки в HTML. Это пустой тег. Соответственно — у него отсутствует закрывающий тег и он ничего не переносит в плане контента. Сразу пример использования:
Это параграф.
Он состоит сразу из нескольких строк.
Примечание: в этом примере тег br используется для вставки разрыва строки между двумя предложениями, в результате чего второе предложение появляется на новой строке.
Зачем нужен
Тег br чаще всего применяется для разделения длинных строк текста или для разделения элементов в списке. Его также можно использовать и для добавления дополнительного пробела между строками текста.
br часто используется в сочетании с другими HTML-элементами, такими как p (абзац) или div (разделение), для структурирования содержимого веб-страницы.
Важно: тег br следует использовать только для добавления разрывов в HTML. Для создания других типов интервалов или иной компоновки страницы — нужно применять стили.
Тег br используется для добавления разрыва внутри блока текста, но не для начала нового абзаца.
Использование спецсимволов \n, \r, \r\n
Для создания новой строки внутри исходного хода можно применять спецсимволы \n или \r\n.
Важно: если нужно создать видимые на странице разрывы, лучше использовать nl2br() — эта функция вставляет HTML-код разрыва строки перед всеми новыми строками. Понять принцип этой функции проще всего на следующем примере:
echo "В исходном тексте веб-страницы \r\n можно увидеть новую строчку в этой строчку";
echo "
";
echo nl2br("Вы увидете \n новых строчек в этой строчке\r\n..");
?>
Использование функции nl2br
Выше мы рассмотрели использование этой функции кратко. Давайте закрепим её, рассмотрев ещё несколько примеров.
Синтаксис функции имеет такой вид:
Запомнить: функция nl2br() вставляет разрывы перед всеми новыми строками. В качестве них могут выступать: \r, \r\n, \n, \n\r.
Изучение способов переноса принесет вам пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.
Функция принимает два параметра:
- string. Входная строка. Обязательный.
- is_xhtml. Может быть TRUE или FALSE. Указывает, стоит ли применять переводы строк, совместимые с XHTML. Опциональный.
Давайте посмотрим ещё один пример использования функции:
echo nl2br("Привет, Миша!\r\nДобро пожаловать на сайт", false);
?>
Привет, Миша!
Добро пожаловать на сайт.
При открытии в браузере, в самом содержимом страницы, пользователь увидит:
Привет, Миша! Добро пожаловать на сайт.
Следующий пример. Он очень похож на предыдущий:
echo nl2br("Привет, Миша!\nДобро пожаловать на сайт.");
?>
Привет, Миша!
Добро пожаловать на сайт.
При открытии в браузере, в самом содержимом страницы, пользователь увидит:
Привет, Миша! Добро пожаловать на сайт.
Тег, таким образом, не виден на странице (в её содержимом)
Универсальный перенос при помощи константы PHP_EOL
PHP_EOL — это предопределенная константа, которая помогает улучшить совместимость PHP-приложений с различными платформами.
Она автоматически выбирает символ конца строки, используемый в системе пользователя (на которой выполняется PHP).
В чем сложность
- В операционных системах семейства Windows новая строка обозначается с помощью \r\n (так называемый возврат каретки или CRLF)
- В операционных системах семейства в Linux и Mac для вышеуказанной цели задействован unix-подобный разделитель \n.
Чтобы улучшить совместимость с другими ОС не применяйте «\n» для создания новых строк
PHP_EOL можно использовать так же, как и \n:
echo 'Privet Misha' . PHP_EOL;
Примечание: поскольку такие переносы строк невидимы, мы использовали [LF], чтобы обозначить его (в том месте, где был выведен перенос).
Вывод. Какой метод правильнее будет использовать
Тег br — полезный инструмент для управления макетом и форматированием текста на веб-странице. Наравне с другими HTML-тегами ( p и div ) br применяется для создания, структурирования и форматирования видимого содержимого страницы.
Чтобы не запутаться в разных методах переноса — даем резюмирующую шпаргалку:
- br / — это HTML-тег. Его задача вывести последующее содержимое с новой строки. Подойдет для выводимого на странице содержимого.
- \r\n — стандартный перенос.
- nl2br() — функция выполняется построчно и автоматически меняет все переносы строк на br/ .
- PHP_EOL — пригодится, когда нужно обеспечить мультиплатформенность.
Хотите стать крутым и востребованным веб-разработчиком? У нас есть специализированный курс!