Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ersetzen von \r\n durch PHP

Das Hauptproblem, das Sie bei all den Variationen haben, die Sie ausprobiert haben, ist, dass beide \n und \r sind Escape-Zeichen, die nur maskiert werden, wenn Sie sie in einer Zeichenfolge in doppelten Anführungszeichen verwenden .

In PHP gibt es einen großen Unterschied zwischen '\r\n' und "\r\n" . Beachten Sie die einfachen Anführungszeichen im ersten und die doppelten Anführungszeichen im zweiten.

Also:'\r\n' ergibt eine Zeichenfolge mit vier Zeichen, die einen Schrägstrich, ein 'r', einen weiteren Schrägstrich und ein 'n' enthält, während "\r\n" enthält zwei Zeichen, das sind die Zeilenumbruch- und Wagenrücklaufzeichen.

Die direkte Antwort auf Ihre Frage lautet also, dass Sie das zweite der in der Frage angegebenen Beispiele verwenden müssen, jedoch mit doppelten Anführungszeichen anstelle von einfachen Anführungszeichen:

$text = str_replace("\r\n",'', $text);

Es sei darauf hingewiesen, dass dadurch alle entfernt werden neue Zeilen aus der Eingabe und ersetzen Sie sie durch nichts. Wenn die Eingabe mehr als eine neue Zeile enthält, werden sie alle entfernt. Ohne mehr über Ihre Anwendung zu wissen, weiß ich nicht, ob Sie das möchten, aber hier sind einige Gedanken:

  • Wenn Sie nur Leerzeilen (und andere Leerzeichen) am Ende entfernen möchten der Eingabezeichenfolge können Sie trim() verwenden stattdessen funktionieren.

  • Wenn Sie die Formatierung für die Ausgabe in HTML beibehalten möchten, verwenden Sie nl2br() Funktion wird Ihnen helfen. Wenn Sie ohne die Formatierung in HTML ausgeben möchten, müssen Sie sie möglicherweise nicht entfernen, da der Browser keine Zeilenumbrüche von \n-Zeichen darstellt.

  • Wenn Sie wie in Ihrem Beispiel neue Zeilen durch nichts ersetzen, läuft das letzte Wort der ersten Zeile jetzt direkt in das erste Wort der zweiten Zeile und so weiter. Möglicherweise ziehen Sie es vor, sie durch ein Leerzeichen statt durch nichts zu ersetzen.

  • Es ist möglich, dass Benutzer die Eingabe nur mit \n übermitteln ohne den passenden \r , oder umgekehrt (dies kann an ihrem Betriebssystem oder Browser, einem absichtlichen Hack oder einer Reihe anderer Gründe liegen). Wenn Sie alle ersetzen möchten Instanzen dieser beiden Zeichen wäre es zuverlässiger, sie einzeln zu ersetzen, anstatt sich darauf zu verlassen, dass sie nebeneinander stehen. str_replace() können Sie dies tun, indem Sie sie in einem Array angeben. Sie können auch strtr() verwenden oder preg_replace() dasselbe Ziel zu erreichen.

Hoffe das hilft.