But : convertir les retours chariot en saut de ligne HTML
Sans doute usez-vous parfois de la fonction nl2br() de PHP ? Celle-ci est très utile lorsque vous récupérer des valeurs depuis une base de donnée vers des « textarea ».
Pour le développement d’EG j’ai eu besoin d’utiliser la fonction inverse (suite à une migration j’ai du fusionner nos deux bases de données). Sauf que… celle-ci n’existe pas, la voici donc :
function br2nl($foo) {
return preg_replace(« /\<br\s*\/?\>/i », « \n », $foo);
}
Si jamais vous avez le besoin de remplacer 2 « <br /> » à la suite, voici le code :
preg_replace(« /(<br\s*\/?\>){2,}/ », « \n », $foo);
Auteur : Mr Xhark
Fondateur du blog et passionné par les technologies je partage mes découvertes quotidiennement.








Déjà 5 commentaires
11 janvier 2010 à 16h46
Bonjour,
attention, nl2br() ne convertit pas les retours chariots en saut de ligne HTML, mais il ajoute un saut de ligne HTML devant chaque retour chariot, comme expliqué sur ce site http://www.infosprog.com/php/nl2br/ .
Ca peut être des fois bon a savoir
Cordialement
11 janvier 2010 à 22h04
@Steph : c’est vrai, merci pour ta remarque
30 mars 2010 à 8h59
Bonjour,
J’ai testé cette fonction dans une page PHP et elle ne fonctionne pas, j’ai l’erreur suivante: Parse error: syntax error, unexpected ‘<' in /homez.13/superf/www/editnews.php on line 85
Et voici ma ligne 85: $contenu=preg_replace(« /(){2,}/ », « \n », $donnees['contenu']);
A noter qu’au départ, j’utilisais un « bête » str_remplace( »,’\n’) mais cela double mes interlignes. Donc 4 passages à la ligne pour
Merci.
30 mars 2010 à 9h27
@raks : ce sont les guillemets qu’ils faut mettre en guillemet classique (comme sur le clavier)
30 mars 2010 à 9h38
Ok merci mais ça ne donne pas le résultat escompté. Avec le 2ème code (pour remplacer 2 ), ça ne remplace rien.
Et pour le 1er code, l’effet est le même qu’avec mon code actuel, donc interligne doublé.