Comment remplacer r & n Avec?
Essayer de simplement remplacer quelques nouvelles lignes. J'ai essayé 3 façons différentes et je n'obtiens aucun changement:
$description = preg_replace('/r?n|r/','<br/>', $description);
$description = str_replace(array("rn","r","n"),"<br/>", $description);
$description = nl2br($description);
Ceux-ci devraient tous fonctionner mais j'ai toujours les nouvelles lignes. Ils sont doubles: "rr". Cela ne devrait pas faire échouer l'un de ces droits?
8 réponses
Il y a déjà nl2br()
fonction que remplace inserts <br>
balises 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 elle ne fonctionne toujours pas assurez-vous que le texte $desciption
est entre guillemets.
C'est parce que les guillemets simples ne "développent" pas les séquences d'échappement telles que \n
comparant aux chaînes entre guillemets doubles. Citation de la documentation PHP:
Note : Contrairement aux guillemets double et heredoc les syntaxes, les variables et les séquences d'échappement des caractères spéciaux ne seront pas développées lorsqu'elles apparaissent dans des chaînes entre guillemets simples.
Essayez d'utiliser ceci
$description = preg_replace("/\r\n|\r|\n/",'<br/>',$description);
Vous pouvez avoir de vrais caractères " \ " dans la chaîne (les chaînes de guillemets simples, comme dit @Robik).
Si vous êtes sûr 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);
nl2br()
comme vous l'avez cela devrait fonctionner correctement:
$description = nl2br($description);
Il est plus probable que le '
non fermé sur la première ligne de votre exemple de code Cause votre problème. Supprimer le ' après $ description ...
...$description');
Cela fonctionnera à coup sûr:
str_replace("\\r","<br />",$description);
str_replace("\\n","<br />",$description);
Nl2br () a fonctionné pour moi, mais j'avais besoin d'envelopper la variable avec des guillemets doubles:
Cela fonctionne:
$description = nl2br("$description");
Cela ne fonctionne pas:
$description = nl2br($description);
Essayez ceci:
echo str_replace( array('\r\n','\n\r','\n','\r'), '<br>' , $description );
Si vous utilisez nl2br
toutes les occurrences de \n
et \r
sera remplacé par <br>
. Mais si (je ne sais pas comment c'est), vous obtenez toujours de nouvelles lignes, vous pouvez utiliser
str_replace("\r","",$description);
str_replace("\n","",$description);
Pour rejouer les nouvelles lignes inutiles par une chaîne vide