Ich versuche einfach einige neue Zeilen zu ersetzen und habe drei verschiedene Möglichkeiten ausprobiert, aber 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 Zeilenumbrüche. Sie sind doppelt: "\ r \ r". Das sollte keines davon zum Scheitern bringen, oder?
php
html
line-breaks
nl2br
theflowersoftime
quelle
quelle
\r
Zeilenumbrüche? AFAIK wechselte sogar zu MacOSX\n
.Antworten:
Es gibt bereits die
nl2br()
Funktion, die<br>
Tags vor neuen Zeilenzeichen einfügt :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 immer noch nicht funktioniert, stellen Sie sicher, dass der Text
$desciption
in doppelten Anführungszeichen steht.Dies liegt daran, dass einfache Anführungszeichen Escape-Sequenzen wie den
\n
Vergleich mit Zeichenfolgen in doppelten Anführungszeichen nicht erweitern . Zitat aus der PHP-Dokumentation:quelle
nl2br
und dass es nicht funktioniert hat.nl2br
sich nicht ersetzen , sondern EINSÄTZE vor Zeilenumbrüche, die die nl Zeichen und verleiht ihm br bevor sie verlässt.Versuchen Sie Folgendes:
$description = preg_replace("/\r\n|\r|\n/", '<br/>', $description);
quelle
$description = str_replace(["\r\n", "\r", "\n"], "<br/>", $description)
aus dieser Antwort/\R/
für alle CR / LF- Zeilenumbruchkombinationen verwenden.)Möglicherweise haben Sie echte Zeichen "\" in der Zeichenfolge (die Zeichenfolgen in einfachen Anführungszeichen, wie @Robik gesagt).
Wenn Sie sich ziemlich sicher sind, dass die Zeichenfolgen '\ r' oder '\ n' ebenfalls ersetzt werden sollten, spreche ich hier nicht von Sonderzeichen, sondern von einer Folge von zwei Zeichen '\' und 'r', dann entkommen Sie dem '\ 'in der Ersetzungszeichenfolge und es wird funktionieren:
str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);
quelle
nl2br()
wie Sie haben, sollte es gut funktionieren:Es ist wahrscheinlicher, dass das nicht geschlossene
'
in der ersten Zeile Ihres Beispielcodes Ihr Problem verursacht. Entfernen Sie die 'after $ description ......$description');
quelle
Versuche dies:
echo str_replace(array('\r\n', '\n\r', '\n', '\r'), '<br>', $description);
quelle
'\r\n'
ist nicht dasselbe wie"\r\n"
."\r\n"
richtig sein?Dies wird sicher funktionieren:
str_replace("\\r", "<br />", $description); str_replace("\\n", "<br />", $description);
quelle
nl2br () hat bei mir funktioniert, aber ich musste die Variable in doppelte Anführungszeichen setzen:
Das funktioniert:
$description = nl2br("$description");
Das funktioniert nicht:
quelle
quelle
Ich denke
str_replace(array("\\r\\n", "\\r", "\\n"), " ", $string);
wird funktionieren.quelle
Wenn Sie verwenden
nl2br
, werden alle Vorkommen von\n
und\r
durch ersetzt<br>
. Aber wenn Sie (ich weiß nicht, wie es ist) immer noch neue Zeilen erhalten, können Sie diese verwendenstr_replace("\r","",$description); str_replace("\n","",$description);
unnötige neue Zeilen durch eine leere Zeichenfolge zu ersetzen.
quelle
\r
instr_replace
scheint alles zu ersetzen. Und außerdem sollten Sie es ersetzen durch<br>
...