PHP Conference Nagoya 2025

nl2br

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

nl2brInsere quebras de linha HTML antes de todos os caracteres de nova linha em um string

Descrição

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

Retorna a string com <br /> ou <br> inseridos antes de todas os caracteres de nova linha (\r\n, \n\r, \n e \r).

Parâmetros

string

A string de entrada.

use_xhtml

Informa se devem ser usadas quebras de linha compatíveis com XHTML ou não.

Valor Retornado

Retorna a string modificada.

Exemplos

Exemplo #1 Usando nl2br()

<?php
echo nl2br("isto não é\n aquilo");
?>

O exemplo acima produzirá:

isto não é<br />
 aquilo

Exemplo #2 Grando marcação HTML válida usando o parâmetro use_xhtml

<?php
echo nl2br("Bem-vindo\r\nEste é meu documento HTML", false);
?>

O exemplo acima produzirá:

Bem-vindo<br>
Este é meu documento HTML

Exemplo #3 Vários separadores de linha

<?php
$string
= "Isto\r\né\n\ruma\nstring\r";
echo
nl2br($string);
?>

O exemplo acima produzirá:

Isto<br />
é<br />
uma<br />
string<br />

Veja Também

  • htmlspecialchars() - Converte caracteres especiais para entidades HTML
  • htmlentities() - Converte todos os caracteres aplicáveis em entidades HTML
  • wordwrap() - Quebra uma string em um dado número de caracteres
  • str_replace() - Substitui todas as ocorrências da string de pesquisa com a string de substituição

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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