96 votes

Comment puis-je remplacer la nouvelle ligne ou \r\n par<br/> ?

J'essaie simplement de remplacer de nouvelles lignes et j'ai essayé trois manières différentes, mais je n'obtiens aucun changement :

 $description = preg_replace('/\r?\n|\r/', '<br/>', $description);
$description = str_replace(array("\r\n", "\r", "\n"), "<br/>", $description);
$description = nl2br($description);

Ceux-ci devraient tous fonctionner, mais j'obtiens toujours les nouvelles lignes. Ils sont doubles : "\r\r". Cela ne devrait faire échouer aucun d'entre eux, n'est-ce pas ?

75voto

afarazit Points 2769

Essayez d'utiliser ceci :

 $description = preg_replace("/\r\n|\r|\n/", '<br/>', $description);

19voto

regilero Points 13640

Vous pouvez avoir de vrais caractères "\" dans la chaîne (les chaînes de guillemets simples, comme l'a dit @Robik).

Si vous êtes sûr que les chaînes '\r' ou '\n' doivent également être remplacées, je ne parle pas ici de caractères spéciaux mais d'une séquence de deux caractères '\' et 'r', puis échappez le '\ ' dans la chaîne de remplacement et cela fonctionnera :

 str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);

10voto

l2aelba Points 3156

Essaye ça:

 echo str_replace(array('\r\n', '\n\r', '\n', '\r'), '<br>', $description);

6voto

sakatc Points 279

nl2br() comme vous l'avez fait devrait fonctionner correctement :

 $description = nl2br($description);

Il est plus probable que le ' non fermé sur la première ligne de votre exemple de code soit à l'origine de votre problème. Supprimez le ' après $description...

 ...$description');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X