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 nouvelles techno, suivez-moi sur twitter
7 commentaires
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
@Steph : c'est vrai, merci pour ta remarque 😉
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.
@raks : ce sont les guillemets qu'ils faut mettre en guillemet classique (comme sur le clavier)
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é.
< et > n'ont pas besoin d'être échappé, ce ne sont pas des caractères spéciaux. Pour éviter d'échapper le slash, il faut choisir un autre délimiteur de pattern comme par exemple le tilde ~.
À noter que cette fonction produira un résultat faux si le br se trouve dans un commentaire html, javascript, ou une chaîne de caractère javascript ou css.
@satanas: merci pour l'info!