W3docs

nl2br()

Artigo sobre a função PHP nl2br(), usada para inserir quebras de linha HTML antes de cada caractere de nova linha em uma string.

A função PHP nl2br() insere uma quebra de linha HTML (<br /> ou <br>) antes de cada caractere de nova linha (\n, \r\n, \r ou \n\r) em uma string. É uma das funções mais comuns no desenvolvimento web com PHP, pois as novas linhas em texto simples — as que o usuário digita ao pressionar Enter, ou que vêm de um banco de dados — são invisíveis no HTML. Os navegadores colapsam espaços em branco, de modo que uma mensagem com múltiplas linhas renderizada diretamente numa página aparece como um único bloco contínuo. nl2br() resolve esse problema transformando cada quebra de linha em marcação que o navegador efetivamente respeita.

Este capítulo aborda a sintaxe, o parâmetro $is_xhtml, o que nl2br() faz (e não faz), o caso de uso típico com entrada do usuário e o problema de segurança que você não deve ignorar.

Sintaxe

nl2br(string $string, bool $use_xhtml = true): string
ParâmetroDescrição
$stringA string de entrada a ser processada. Obrigatório.
$use_xhtmlOpcional. Define se devem ser emitidas tags <br /> compatíveis com XHTML. O padrão é true. Quando false, são usadas tags <br> simples.

A função retorna uma nova string com as quebras inseridas; strings PHP são imutáveis, portanto a $string original permanece intacta.

Exemplo básico

php— editable, runs on the server

Saída (o HTML bruto que o navegador recebe):

Hello<br />
World!

Observe que o \n original ainda está lánl2br() adiciona o <br /> antes da nova linha, sem substituí-la. Isso é intencional: mantém a legibilidade do código-fonte ao visualizar o código da página, enquanto o <br /> é o que força a quebra de linha visível.

Controlando o estilo da tag com $use_xhtml

Passe false como segundo argumento para obter tags <br> no estilo HTML5 em vez da forma XHTML com fechamento automático:

<?php
echo nl2br("Line 1\nLine 2", false);
?>

Saída:

Line 1<br>
Line 2

Use <br /> (o padrão) para documentos XHTML ou XML; qualquer forma é válida em HTML5, portanto o padrão funciona praticamente em todos os lugares.

O caso de uso real: entrada do usuário

A função é especialmente útil ao exibir texto enviado por um usuário em um <textarea>. Os navegadores ignoram as novas linhas digitadas pelo usuário, portanto, sem nl2br(), um comentário com múltiplos parágrafos é renderizado como um único bloco. No entanto, há uma regra de ordenação crítica: escape primeiro, depois converta as quebras. Se você executar nl2br() em uma entrada bruta, protege as quebras de linha, mas deixa a porta aberta para XSS, pois nl2br() não faz escape de HTML — ela apenas adiciona tags <br>.

<?php
$comment = "Hi there\nThanks for the great post!";

// Correct order: escape the HTML, THEN convert newlines.
echo nl2br(htmlspecialchars($comment));
?>

htmlspecialchars() neutraliza qualquer <, > ou & digitado pelo usuário, e nl2br() adiciona tags <br /> seguras posteriormente. Inverter a ordem — htmlspecialchars(nl2br($comment)) — escaparia suas próprias tags <br /> para o texto visível &lt;br&gt;, de modo que as quebras nunca seriam renderizadas.

Erros comuns

  • Ela não remove nem substitui a nova linha. O \n permanece na string. Se você precisar remover a quebra de linha, use str_replace() em seguida.
  • Ela não é uma função de segurança. nl2br() não realiza escape. Sempre combine-a com htmlspecialchars() em entradas não confiáveis.
  • Ela age apenas sobre caracteres de nova linha, não sobre o ajuste automático de linha do <textarea> ou quebra de palavra — esses são apenas visuais e nunca chegam ao seu script.
  • Somente texto simples. Enviar sua saída como corpo de um e-mail ou gravá-la em um CSV é inútil; as tags <br> são HTML e não têm significado fora de um navegador.

Funções relacionadas

  • htmlspecialchars() — escapa caracteres especiais antes da saída (use em conjunto com nl2br()).
  • str_replace() — substitui substrings, por exemplo, para remover novas linhas completamente.
  • strip-tags() — remove tags HTML de uma string.
  • trim() — remove espaços em branco iniciais e finais, incluindo novas linhas desnecessárias.

Prática

Prática
O que faz a função nl2br() em PHP?
O que faz a função nl2br() em PHP?
Was this page helpful?