Возвращает строку string , в которой перед каждым переводом строки ( \r\n , \n\r , \n и \r ) вставлен или .
Список параметров
Использовать ли совместимые с XHTML переводы строк или нет.
Возвращаемые значения
Возвращает изменённую строку.
Примеры
Пример #1 Пример использования nl2br()
Результат выполнения данного примера:
Пример #2 Генерирование корректной HTML-вёрстки с помощью параметра use_xhtml
Результат выполнения данного примера:
Привет! Этой мой HTML-документ
Пример #3 Различные разделители строк
Результат выполнения данного примера:
Смотрите также
htmlspecialchars() — Преобразует специальные символы в HTML-сущности
htmlentities() — Преобразует все возможные символы в соответствующие HTML-сущности
wordwrap() — Переносит строку по указанному количеству символов
str_replace() — Заменяет все вхождения строки поиска на строку замены
User Contributed Notes 17 notes
It’s important to remember that this function does NOT replace newlines with tags. Rather, it inserts a tag before each newline, but it still preserves the newlines themselves! This caused problems for me regarding a function I was writing — I forgot the newlines were still being preserved.
because each OS have different ASCII chars for linebreak: windows = \r\n unix = \n mac = \r
/** * Convert BR tags to nl * * @param string The string to convert * @return string The converted string */ function br2nl ( $string ) return preg_replace ( ‘/\/i’ , «\n» , $string ); > ?>
Enjoy
Starting from PHP 4.3.10 and PHP 5.0.2, this should be the most correct way to replace and tags with newlines and carriage returns. /** * Convert BR tags to newlines and carriage returns. * * @param string The string to convert * @return string The converted string */ function br2nl ( $string ) return preg_replace ( ‘/\/i’ , PHP_EOL , $string ); > ?> (Please note this is a minor edit of this function: http://php.net/nl2br#86678 )
You might also want to be «platform specific», and therefore this function might be of some help: /** * Convert BR tags to newlines and carriage returns. * * @param string The string to convert * @param string The string to use as line separator * @return string The converted string */ function br2nl ( $string , $separator = PHP_EOL ) $separator = in_array ( $separator , array( «\n» , «\r» , «\r\n» , «\n\r» , chr ( 30 ), chr ( 155 ), PHP_EOL )) ? $separator : PHP_EOL ; // Checks if provided $separator is valid. return preg_replace ( ‘/\/i’ , $separator , $string ); > ?>
double quotes !== single quotes
Seeing all these suggestions on a br2nl function, I can also see that neither would work with a sloppy written html line break.. Users can’t be trusted to write good code, we know that, and mixing case isn’t too uncommon.
I think this little snippet would do most tricks, both XHTML style and HTML, even mixed case like and even or .
This is example with «\R» regex token which matches any unicode newline character. «u» flag treate strings as UTF-16. Which is optional, depending on your use case.
public function nl2br ( $string ) return preg_replace ( ‘/\R/u’ , ‘ ‘ , $string ); >
?>
NOTE: preg_replace versions are much slower than using str_replace version or built-in nl2br. Check out pcre.backtrack_limit php.ini setting for information about PCRE limit. It’s good to know.
В 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;
текст текст текст текст текст текст текст текст»); //Это выбивает ошибку JS Нужно: myfunction(«текст текст текст текст
текст текст текст текст текст текст текст текст»); //Так будет работать. Нужно решение на PHP или JS ну или может это в самом mysql можно задать.
Замена в поле переноса строки на текстовый символ Сорри за тупой вопрос, но для меня он горячо актуален: Как заменить в текстовом поле перенос.
Символ переноса в Excel (Как заменить символ на перенос строки) Решил подсобить всем кто будет гуглить: Как заменить символ на перенос строки в Excel (ALT+Enter).
Символ переноса на другую строчку или символ enter Здравствуйте. Имеем: Текстовый документ, в нем строчки, в каждой строчке по одному слову. .
Появляется символ переноса Приветствую. Я через админку, на страницу добавляю примерно такой код: <tr ><td.