PHP Conference Nagoya 2025

nl2br

(PHP 4, PHP 5, PHP 7, PHP 8)

nl2brВставляет HTML-код разрыва строки перед каждым переводом строки

Описание

nl2br(string $string, bool $use_xhtml = true): string

Функция возвращает строку string, в которой перед каждым переводом строки (\r\n, \n\r, \n и \r) вставила <br /> или <br>.

Список параметров

string

Входная строка.

use_xhtml

Использовать ли совместимые с XHTML переводы строк или нет.

Возвращаемые значения

Функция возвращает изменённую строку.

Примеры

Пример #1 Пример использования функции nl2br()

<?php

echo nl2br("foo — это вам не\n bar");

?>

Результат выполнения приведённого примера:

foo — это вам не<br />
 bar

Пример #2 Генерирование корректной HTML-разметки с параметром use_xhtml

<?php

echo nl2br("Привет!\r\nЭтой мой HTML-документ", false);

?>

Результат выполнения приведённого примера:

Привет!<br>
Этой мой HTML-документ

Пример #3 Пример разделителей строк

<?php

$string
= "This\r\nis\n\ra\nstring\r";
echo
nl2br($string);

?>

Результат выполнения приведённого примера:

This<br />
is<br />
a<br />
string<br />

Смотрите также

  • htmlspecialchars() - Преобразовывает специальные символы в HTML-сущности
  • htmlentities() - Преобразовывает возможные символы в HTML-сущности
  • wordwrap() - Переносит строку через заданное количество символов
  • str_replace() - Заменяет вхождения строки поиска строкой замены

Добавить

Примечания пользователей 6 notes

up
128
CGameProgrammer at gmail dot com
19 years ago
It's important to remember that this function does NOT replace newlines with <br> tags. Rather, it inserts a <br> 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.

If you don't want newlines, do:

<?php
$Result
= str_replace( "\n", '<br />', $Text );
?>
up
92
ngkongs at gmail dot com
17 years ago
to replace all linebreaks to <br />
the best solution (IMO) is:

<?php
function nl2br2($string) {
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string);
return
$string;
}
?>

because each OS have different ASCII chars for linebreak:
windows = \r\n
unix = \n
mac = \r

works perfect for me
up
46
N/A
16 years ago
Here's a more simple one:

<?php
/**
* Convert BR tags to nl
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl($string)
{
return
preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}
?>

Enjoy
up
18
fquffio at live dot it
10 years ago
Starting from PHP 4.3.10 and PHP 5.0.2, this should be the most correct way to replace <br /> and <br> tags with newlines and carriage returns.
<?php
/**
* 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('/\<br(\s*)?\/?\>/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:
<?php
/**
* 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('/\<br(\s*)?\/?\>/i', $separator, $string);
}
?>
up
13
aabaev
6 years ago
double quotes !== single quotes

php > echo nl2br('\r\n');
\r\n
php > echo nl2br("\r\n");
<br />
up
8
Anders Norrbring
18 years ago
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 <Br> <bR /> and even <br > or <br />.

<?php
function br2nl($text)
{
return
preg_replace('/<br\\s*?\/??>/i', '', $text);
}
?>
To Top