Zeilenumbrüche in HTML-Zeilenumbrüche umwandeln (Thema: PHP Beispiele)

Wie normale Zeilenumbrüche in PHP durch HTML-Zeilenumbrüche ersetzt werden können

1. Einleitung

Um in einem String, der nur „normale” Zeilenumbrüche („\n”) enthält auch solche HTML-Zeilenumbrüche einzufügen, die von einem Browser interpretiert werden („<br />”), kann nl2br($string) verwendet werden. Diese Funktion ersetzt jedes „\n” im String automatisch durch ein „<br />\n”. Nützlich ist nl2br() typischerweise beim Darstellen von Daten, die Benutzer einer Webseite in Formulare eingegeben haben — etwa bei Kommentarfunktionen, Foren oder Gästebüchern. Die abgesendeten Daten enthalten nur „normale” Zeilenumbrüche und kein HTML (bzw. darin enthaltenes HTML sollte in den meisten Fällen aus Sicherheitsgründen codiert werden).

2. Beispiel zu nl2br

In diesem Beispiel wird ein String aus drei Zeilen definiert, die jeweils ein Wort enthalten („Zeile1”, „Zeile2” und „Zeile3”). Dieser String wird zuerst ohne Verwendung von nl2br() ausgegeben und danach mit. Entsprechend enthält die zweite Ausgabe auch HTML-Zeilenumbrüche.

PHP-Code
<?php
	$str = "Zeile1\nZeile2\nZeile3";
	var_dump($str);
	var_dump(nl2br($str));
?>

HTML-Code: Ausgabe
string(20) "Zeile1
Zeile2
Zeile3"
string(32) "Zeile1<br />
Zeile2<br />
Zeile3"


3. Eigene Funktion

Die Funktionalität von nl2br() lässt sich leicht durch eine eigene Funktion nachbilden. Dafür kann schon str_replace($search, $replace, $subject) ausreichen.

PHP-Code
<?php
	function myNl2br($str) {
		return str_replace("\n", "<br />\n", $str);
	}

	$str = "Zeile1\nZeile2\nZeile3";
	var_dump($str);
	var_dump(myNl2br($str));
?>

HTML-Code: Ausgabe
string(20) "Zeile1
Zeile2
Zeile3"
string(32) "Zeile1<br />
Zeile2<br />
Zeile3"


4. Performance von nl2br

Mit dem nachfolgenden Skript wird die Performance von nl2br() bei Anwendung auf einen Beispielstring getestet. Dazu wird nl2br() eine Million mal angewendet und die verstrichene Zeit gemessen. Um das Ergebnis besser einordnen zu können (letztlich hängt es vom verwendeten System ab), wird zusätzlich eine Million mal ein leerer String per echo ausgegeben. Den Ausgaben des Skripts kann entnommen werden, dass die Anwendung von nl2br() auf den Beispielstring etwa 20 mal mehr Zeit benötigt, als ein leeres echo auszuführen. Da nl2br() beim Generieren einer Seite nur selten öfter als 20 Mal ausgeführt wird, ist der Zeitbedarf der Funktion demnach vernachlässigbar.

PHP-Code
<?php
	// Anzahl Iterationen
	define('ITERATIONS', pow(10, 6));
	
	// Beispieltext
	$str = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
	sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
	sed diam voluptua.
	At vero eos et accusam et justo duo dolores et ea rebum.
	Stet clita kasd gubergren, no sea takimata sanctus est
	Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
	consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
	et dolore magna aliquyam erat, sed diam voluptua.
	At vero eos et accusam et justo duo dolores et ea rebum.
	Stet clita kasd gubergren, no sea takimata
	sanctus est Lorem ipsum dolor sit amet.';
	
	// nl2br
	$starttime = microtime(true);
	
	for ($x=0; $x<ITERATIONS; $x++) {
		nl2br($str);
	}
	
	echo "nl2br: " . ITERATIONS . " mal in " . round(microtime(true) - $starttime, 2) . " Sekunden ausgefuehrt.\n";
	
	// leeres echo
	$starttime = microtime(true);
	for ($x=0; $x<ITERATIONS; $x++) {
		echo "";
	}
	
	echo "echo: " . ITERATIONS . " mal in " . round(microtime(true) - $starttime, 2) . " Sekunden ausgefuehrt.";
?>

HTML-Code: Ausgabe
nl2br: 1000000 mal in 3.27 Sekunden ausgefuehrt.
echo: 1000000 mal in 0.15 Sekunden ausgefuehrt.

Kommentare (0)

Von neu nach alt