web-dev-qa-db-de.com

Wie ersetzt man newline oder\r\n mit <br/>?

Versuchen, einfach einige neue Zeilen zu ersetzen. Habe 3 verschiedene Möglichkeiten ausprobiert und ich bekomme keine Änderung:

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

Diese sollten alle funktionieren, aber ich bekomme immer noch die neuen Zeilen. Sie sind doppelt: "\ r\r". Das sollte nicht dazu führen, dass diese fehlschlagen.

56
Thomas McCabe

Es gibt bereits nl2br() die Funktion ersetzt fügt<br>-Tags vor neuen Zeilenzeichen ein:

Beispiel ( 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);
?>

Wenn es trotzdem nicht funktioniert, stellen Sie sicher, dass der Text $desciption in doppelte Anführungszeichen gesetzt ist.

Das liegt daran, dass einfache Anführungszeichen keine Escape-Sequenzen wie \n 'erweitern', wenn sie mit doppelten Anführungszeichenfolgen verglichen werden. Zitat aus der PHP Dokumentation:

Note: Im Gegensatz zu den Anführungszeichen mit doppelten Anführungszeichen und Heredoc werden Variablen und Escape-Sequenzen für Sonderzeichen nicht erweitert, wenn sie in einfachen Anführungsstrichen vorkommen.

111
Robik

Versuchen Sie es damit

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

Sie können echte Zeichen "\" in der Zeichenfolge enthalten (die einzelnen Anführungszeichenfolgen, wie @Robik).

Wenn Sie sich ganz sicher sind, dass auch die Zeichenfolgen '\ r' oder '\ n' ersetzt werden sollen, spreche ich hier nicht von Sonderzeichen, sondern von zwei Zeichen '\' und 'r'. 'in der Ersetzungszeichenfolge und es wird funktionieren:

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

nl2br() wie Sie es haben, sollte gut funktionieren:

$description = nl2br($description);

Es ist wahrscheinlicher, dass der nicht geschlossene ' in der ersten Zeile Ihres Beispielcodes Ihr Problem verursacht. Entfernen Sie die 'after $ description ...

...$description');
5
sakatc

nl2br () arbeitete für mich, aber ich musste die Variable mit Anführungszeichen umschließen:

Das funktioniert:

$description = nl2br("$description");

Das funktioniert nicht:

$description = nl2br($description);
3
infografnet

Das wird sicher funktionieren:

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

Versuche dies:

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

Ich denke str_replace (array ("\ r\n", "\ r", "\ n"), "", $ string); Wird funktionieren. 

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