Es gibt bereits eine Funktion in PHP, die eine neue Zeile in ein br namens nl2br()
konvertiert. Das Umgekehrte ist jedoch nicht wahr. Stattdessen können Sie Ihre eigene Funktion wie folgt erstellen:
function br2nl($string)
{
$breaks = array("<br />","<br>","<br/>");
return str_ireplace($breaks, "\r\n", $string);
}
Dann, wenn Sie es verwenden möchten, nur nennen es wie folgt:
$original_string = 'some text with<br>tags here.';
$good_string = br2nl($original_string);
Es gibt drei Dinge erwähnenswert:
- Es kann besser sein, die Daten in der Datenbank genau so zu speichern, wie der Benutzer sie eingegeben hat, und dann die Konvertierung durchzuführen, wenn Sie sie abrufen. Das hängt natürlich davon ab, was Sie tun.
- Einige Systeme wie Windows verwenden \ r \ n. Einige Systeme wie Linux und Mac verwenden \ n. Einige Systeme, wie ältere Mac-Systeme, verwenden für neue Zeilenzeichen. In Anbetracht dessen und insbesondere, wenn Sie sich entscheiden, Punkt 1 oben zu verwenden, möchten Sie vielleicht die PHP-Konstante
PHP_EOL
anstelle von \ r \ n verwenden. Dadurch erhalten Sie den richtigen Zeilenumbruch, unabhängig davon, auf welchem System Sie sich befinden.
- Die oben angegebene Methode ist effizienter als preg_replace.Es berücksichtigt jedoch nicht standardmäßiges HTML wie
<br />
und andere Variationen nicht. Wenn Sie diese Variationen berücksichtigen müssen, sollten Sie die Funktion preg_replace()
verwenden. Damit kann man alle möglichen Variationen überdenken und trotzdem nicht alle erklären. Betrachten Sie zum Beispiel <br id="mybreak">
und viele andere Kombinationen von Attributen und Leerraum.