de.comp.lang.php.* FAQ

7.6. Wie kann ich Zeilenumbrüche in <br> umwandeln?

Keywords: Zeilenumbruch | Zeile | HTML

Antwort von Kristian Köhntopp

PHP bietet die Funktion nl2br() , die vor jedem Zeilenumbruch ein <br> einfügt. Ab PHP 4.0.5 wird statt <br> das XHTML-konforme <br /> verwendet. Diese Schreibweise ist auch mit älteren Browsern kompatibel und wird auf jeden Fall empfohlen. Anzumerken ist hierbei, dass die von Mac als "Neue-Zeile-Zeichen" verwendeten Carriage-Returns (\r) nicht als solches erkannt werden und deshalb nicht in <br /> umgewandelt werden.

  // Einlesen der Datei "datei" in den String $str
  $str = implode("", @file("datei"));
  // Ausgeben der Datei mit Umbrüchen
  print nl2br($str);

Sollen Zeilenumbrüche komplett ersetzt werden, benutzt man z. B. str_replace() :

$string = str_replace("\n", "<br>", $string);

Zum Thema "Zeilenumbruch" siehe auch: "Wie kann ich Zeilenumbrüche verarbeiten?".

Antwort von Johannes Frömter

Sollte man in die Verlegenheit kommen, eine Umkehrfunktion zu nl2br() zu benötigen, muss man einen Regulären Ausdruck bemühen.

function br2nl($str) {
    return preg_replace("=<br(>|([\s/][^>]*)>)\r?\n?=i", "\n", $str);
}

Der Ausdruck ist etwas länglich, weil er sicherstellt, dass wirklich nur <br>-Tags (die allerdings in allen Variationen!), nicht aber XML-Tags o. ä. (<brown> z.B.) umgewandelt werden - sicher ist sicher...

Valid HTML 4.01! Valid CSS!

7.6. Wie kann ich Zeilenumbrüche in <br> umwandeln?
http://www.php-faq.de/q/q-string-html-umbruch.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team