Funktion nl2br() - HTML-Zeilenumbrüche mit <br> einfügen

In PHP-Anwendungen sind in vielen Strings Zeilenumbrüche enthalten. Diese können z.B. entstehen, wenn man einen Text aus einem Editor durch Kopieren und Einfügen überträgt. Bei der Darstellung im Browser werden die Zeilenumbrüche jedoch nicht angezeigt, da hierfür der HTML-Code <br> oder <br /> (in XHTML) benötigt wird. Mit dem folgenden Code werden die Buchstaben A, B und C zwar im Quelltext untereinander angezeigt, in der Browseransicht jedoch nicht.

<?php

$str = 'A
B
C';

// Ausgabe A B C
echo $str;

?>

Wenn man möchte, dass an den Stellen, wo die Zeilenumbrüche enthalten sind, auch der HTML-Code hierfür automatisch eingefügt wird, kann man die Funktion nl2br() verwenden. Die Parameter werden wie folgt angegeben.

  1. Der String, in dem der HTML-Code an den entsprechenden Stellen eingefügt werden soll (string).
  2. Boolescher Wert, mit dem angegeben wird, ob XHTML-Code eingefügt werden soll (is_xhtml, optional).

Falls der zweite Parameter nicht angegeben wird, gilt die Standardeinstellung und der XHTML-Code <br /> für den Zeilenumbruch wird eingefügt. Das entspricht dem Wert TRUE für is_xhtml.

<?php

$str = 'A
B
C';

// Ausgabe untereinander A<br />B<br />C
echo nl2br($str);

?>

Falls die Zeilenumbrüche statt mit der XHTML-Schreibweise in HTML-Schreibweise <br> eingefügt werden sollen, muss man den zweiten Parameter auf FALSE setzen.

<?php

$str = 'A
B
C';

// Ausgabe untereinander A<br>B<br>C
echo nl2br($str, FALSE);

?>

Die Funktion kann auch verwendet werden, wenn im String die Steuerzeichen \n enthalten sind. Hierfür muss der String jedoch in doppelten Anführungszeichen gesetzt werden, da \n ansonsten als Text interpretiert wird.

<?php

$str = "A\nB\nC";

// Ausgabe untereinander A<br>B<br>C
echo nl2br($str, FALSE);

?>

Das Einfügen von HTML-Code funktioniert auch bei Steuerzeichen \r\n (Zeilenumbrüche in Windows).

<?php

$str = "A\r\nB\r\nC";

// Ausgabe untereinander A<br>B<br>C
echo nl2br($str, FALSE);

?>

Mit nl2br() werden zwar die Tags <br> oder <br /> eingefügt, sodass im Browser Zeilenumbrüche dargestellt werden. Die Zeilenumbrüche im Quelltext bleiben jedoch erhalten. Um auch diese zu entfernen, kann man nl2br() mit anderen Funktionen kombinieren. Beim folgenden Beispiel wird die gesamte Zeichenkette einzeilig ausgegeben.

<?php

$str = "A\r\nB\r\nC";

// Ausgabe einzeilig A<br>B<br>C
echo str_replace("\r\n", "", nl2br ($str, FALSE));

?>

Vor der PHP-Version 4.0.5 wurde als Code immer ein <br> eingefügt. Danach wurde die XHTML-Schreibweise <br /> verwendet, da man davon ausging, dass HTML nicht mehr weiterentwickelt und durch XHTML abgelöst wird. Ab der PHP-Version 5.3.0 wurde der zweite Parameter is_xhtml implementiert, sodass der Programmierer die Schreibweise selbst vorgeben kann.