web-dev-qa-db-fra.com

Comment remplacer newline ou\r\n par <br/>?

Essayer de remplacer simplement de nouvelles lignes. J'ai essayé 3 façons différentes et je n'ai aucun changement:

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

Celles-ci devraient toutes fonctionner mais je reçois toujours les nouvelles lignes. Ils sont doubles: "\ r\r". Cela ne devrait en aucun cas faire échouer tout cela?

56
Thomas McCabe

Il existe déjà nl2br() function remplace insère<br> tags avant les nouveaux caractères de ligne:

Exemple ( codepad ):

<?php
// Won't work
$desc = 'Line one\nline two';
// Should work
$desc2 = "Line one\nline two";

echo nl2br($desc);
echo '<br/>';
echo nl2br($desc2);
?>

Mais si cela ne fonctionne toujours pas, assurez-vous que le texte $desciption est cité entre guillemets.

En effet, les guillemets simples ne «développent» pas les séquences d'échappement telles que \n en les comparant à des chaînes à guillemets. Citation de la documentation PHP:

Note: Contrairement aux syntaxes guillemet et heredoc, les variables et les séquences d'échappement pour les caractères spéciaux ne seront pas développées lorsqu'elles apparaîtront dans des chaînes entre guillemets simples.

111
Robik

Essayez d'utiliser ceci

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

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

Si vous êtes certain que les chaînes "\ r" ou "\ n" doivent également être remplacées, je ne parle pas de caractères spéciaux ici, 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);
15
regilero

nl2br() tel que vous l'avez devrait fonctionner correctement:

$description = nl2br($description);

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

...$description');
5
sakatc

nl2br () a travaillé pour moi, mais je devais envelopper les variables entre guillemets:

Cela marche:

$description = nl2br("$description");

Cela ne marche pas:

$description = nl2br($description);
3
infografnet

Cela fonctionnera à coup sûr:

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

Essaye ça:

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

Je pense que str_replace (array ("\ r\n", "\ r", "\ n"), "", $ string); Marchera. 

0
Dipak Chatterjee
$description = nl2br(stripcslashes($description));
0
softcod.com