logo oujood
🔍

Fonction nl2br() PHP : Convertir les Sauts de Ligne en Balises HTML

Convertit automatiquement les caractères de nouvelle ligne ( , , ) en balises <br /> HTML pour un affichage correct dans le navigateur.

OUJOOD.COM

La fonction nl2br() en PHP

Référence des fonctions de chaînes PHP — Manipulation de texte multiligne

Disponibilité : PHP 4, PHP 5, PHP 7, PHP 8 (compatible toutes versions modernes)

La fonction nl2br() est une fonction essentielle de manipulation de chaînes en PHP. Elle insère automatiquement une balise HTML <br /> avant chaque caractère de nouvelle ligne présent dans une chaîne. Cela permet d'afficher correctement dans un navigateur web un texte saisi par un utilisateur (via un formulaire, une textarea, une base de données) sans perdre la mise en forme par retours à la ligne. Sans cette fonction, le HTML ignore les sauts de ligne simples.

Syntaxe officielle de nl2br()

La fonction accepte deux paramètres : la chaîne à traiter et un booléen optionnel pour choisir le format de la balise générée :

nl2br ( string $string , bool $use_xhtml = true ) : string
Paramètre Type Description
$string string Requis. La chaîne de caractères à traiter. Tous les caractères de nouvelle ligne (\n, \r, \r\n, \n\r) recevront une balise <br /> avant eux.
$use_xhtml bool Optionnel. Si true (défaut), insère <br /> (XHTML). Si false, insère <br> (HTML5). Disponible depuis PHP 4.0.5.

Valeur de retour : La chaîne modifiée avec les balises <br /> (ou <br>) insérées avant chaque saut de ligne. Les caractères de nouvelle ligne originaux sont conservés dans la chaîne.


Note historique importante : Avant PHP 4.0.5, nl2br() insérait uniquement <br>. À partir de PHP 4.0.5, elle insère par défaut <br /> conforme à la norme XHTML. Depuis PHP 5.3+, le second paramètre $use_xhtml permet de choisir explicitement le format, ce qui est recommandé pour les projets HTML5 modernes où <br> est préféré.


Exemples pratiques de nl2br() en PHP

Les exemples suivants illustrent les cas d'utilisation les plus courants, du plus simple au plus avancé. Chaque exemple est commenté de façon pédagogique pour comprendre exactement ce que fait la fonction.

Exemple 1 — Conversion basique d'un saut de ligne \n

Le cas le plus fondamental : une chaîne contenant le caractère d'échappement \n (newline Unix). Sans nl2br(), le navigateur afficherait les deux phrases sur une seule ligne.

  📋 Copier le code

<?php
// Chaîne avec caractère de nouvelle ligne \n (séquence d'échappement)
$texte = "Première ligne.\nDeuxième ligne.";
// nl2br() insère <br /> AVANT chaque \n, le \n est conservé
echo nl2br($texte);
// Résultat HTML généré : Première ligne.<br />\nDeuxième ligne.
?>

Le rendu visuel dans le navigateur sera :

  Première ligne.
  Deuxième ligne.

Le code source HTML généré :

Première ligne.<br />
Deuxième ligne.

Exemple 2 — Traitement d'un texte multiligne saisi dans une variable

Ce second exemple montre la différence concrète entre un echo direct (sans conversion) et un echo nl2br(). Ce scénario est typique d'un commentaire utilisateur ou d'un contenu issu d'une base de données.

  📋 Copier le code

<?php
// Texte multiligne saisi directement (les retours à la ligne sont réels dans le fichier PHP)
$texteMultiligne = "Première ligne.
Deuxième ligne.
Troisième ligne.";
// Sans nl2br() : le HTML ignore les sauts de ligne, tout s'affiche sur une seule ligne
echo $texteMultiligne;
echo "<hr>"; // Séparateur visuel pour comparer les deux résultats
// Avec nl2br() : chaque saut de ligne devient <br />, respectant la mise en forme
echo nl2br($texteMultiligne);
?>

Rendu sans nl2br() (tout sur une ligne) vs avec nl2br() (sauts respectés) :

  Première ligne. Deuxième ligne. Troisième ligne.
  ---
  Première ligne.
  Deuxième ligne.
  Troisième ligne.

Exemple 3 — Choisir entre <br /> XHTML et <br> HTML5

Depuis PHP 5.3+, le second paramètre permet d'adapter la sortie selon le doctype de votre projet. Pour un document HTML5, utilisez false pour obtenir <br> (syntaxe HTML5 standard).

  📋 Copier le code

<?php
$texte = "Ligne A.\nLigne B.\nLigne C.";
// Mode XHTML (défaut, $use_xhtml = true) : génère <br />
echo nl2br($texte, true);
echo "<hr>";
// Mode HTML5 ($use_xhtml = false) : génère <br> sans la barre oblique
echo nl2br($texte, false);
// Recommandé pour les projets HTML5 modernes : utiliser false
?>

Code HTML source généré pour chaque mode :

Mode XHTML : Ligne A.<br />\nLigne B.<br />\nLigne C.
Mode HTML5 : Ligne A.<br>\nLigne B.<br>\nLigne C.

Exemple 4 — Cas réel : afficher un commentaire utilisateur en sécurité

Dans un contexte réel (formulaire de contact, champ textarea), il faut toujours combiner nl2br() avec htmlspecialchars() pour sécuriser le contenu contre les injections XSS avant d'afficher du texte utilisateur dans le navigateur.

  📋 Copier le code

<?php
// Simulation d'un commentaire reçu via un formulaire (données non fiables)
$commentaireUtilisateur = "Bonjour !\nCeci est mon commentaire.\n<script>alert('XSS')</script>";
// Étape 1 : Sécuriser avec htmlspecialchars() pour neutraliser le HTML malveillant
$texteSecurise = htmlspecialchars($commentaireUtilisateur, ENT_QUOTES, 'UTF-8');
// Étape 2 : Convertir les sauts de ligne en <br /> pour l'affichage HTML
$texteAffichage = nl2br($texteSecurise, false);
// L'ordre est important : htmlspecialchars() AVANT nl2br()
echo $texteAffichage;
?>

Bonne pratique : Appliquer toujours htmlspecialchars() avant nl2br(), sinon les balises <br /> déjà insérées seraient également échappées et s'afficheraient en texte brut.

Récapitulatif des caractères de nouvelle ligne reconnus

La fonction nl2br() reconnaît et traite les quatre combinaisons de retour à la ligne suivantes, couvrant tous les systèmes d'exploitation (Unix/Linux, Windows, anciens Mac) :

Séquence Nom Système
\nLF (Line Feed)Unix/Linux/macOS moderne
\r\nCR+LFWindows
\rCR (Carriage Return)Anciens Mac (pré-OS X)
\n\rLF+CRRare, cas particuliers

Par carabde | Mis à jour le 17 février 2026