Zeilenumbrüche mit echo (Thema: PHP Beispiele)

Wie genau Zeilenumbrüche bei Ausgaben von echo() erzeugt werden.

Bei Ausgaben mittels echo() werden nicht automatisch Zeilenumbrüche erzeugt:
PHP-Code
<?php
	echo('A');
	echo('B');
	echo('C');
?>
Ausgabe
ABC

Stattdessen ist es notwendig, diese manuell zu setzen. Dazu wird die Schreibweise „\n” verwendet, was so viel wie „new line” heißt. Obwohl zwei Zeichen eingetippt werden, wird es automatisch in ein einzelnes neue-Zeile-Zeichen umgewandelt. Dabei ist zu beachten, dass diese Umwandlung von echo() nur dann durchgeführt wird, wenn der String von doppelten Anführungszeichen umgeben ist, da bei einfachen Anführungszeichen der Inhalt grundsätzlich nicht geparset wird (daher werden z.B. auch Variablen nicht automatisch ersetzt).
PHP-Code
<?php
	// Zeilenumbrueche koennen mittels \n erzeugt werden.
	// Dabei muss \n in doppelten Anfuehrungszeichen stehen,
	// in einfachen Anfuehrungszeichen wird es nicht beachtet
	echo("Das ist ein Zeilenumbruch: \n");
	echo('Dieser Zeilenumbruch wird nicht beachtet: \n');
	echo("(Das steht nicht in einer neuen Zeile.)\n");

	// Zeilenumbrüche dürfen in jeder String-Variable platziert werden.
	// echo() wird nicht zwangsweise benötigt, um sie auszugeben.
	$var = "A\nB\nC";
	var_dump($var);
?>
Ausgabe
Das ist ein Zeilenumbruch: 
Dieser Zeilenumbruch wird nicht beachtet: \n(Das steht nicht in einer neuen Zeile.)
string(5) "A
B
C"

Um bei Verwendung von einfachen Anführungszeichen dennoch Zeilenumbrüche darstellen zu können, müssen diese von doppelten Anführungszeichen umgeben sein und mit ersterem String verknüpft werden:
PHP-Code
<?php
	echo('Das erzeugt eine neue Zeile:'."\n");
	echo('Neue Zeile!');
?>
Ausgabe
Das erzeugt eine neue Zeile:
Neue Zeile!

Will man statt einer neuen Zeile tatsächlich „\n” (also einen Schrägstrich und dann ein n) ausgeben, dann können dafür einfache Anführungszeichen verwendet werden, oder man escapet das neue-Zeile-Zeichen:
PHP-Code
<?php
	// mittels einfache Anführungszeichen
	echo('\n');
	// mittels Escaping, dem \n wird also ein zusätzliches "\" vorangestellt
	echo("\\n");
?>
Ausgabe
\n\n

Zeilenumbrüche, die per \n erzeugt werden, werden von Browsern nur dann angezeigt, wenn man den Quelltext öffnet. Beim Ansehen der generierten Seite werden sie ignoriert. Das liegt daran, dass die Browser standardmäßig versuchen, HTML darzustellen und in HTML werden Zeilenumbrüche durch „\n” nicht beachtet. Stattdessen gibt es ein eigenes Tag zum Erzeugen von Zeilenumbrüchen, nämlich „<br>” (HTML4, HTML5) oder „<br />” (XHTML):
PHP-Code
<?php
	echo("(1) Dieser Zeilenumbruch wird nur im Quelltext eines Browsers angezeigt: \n");
	echo("(2) Dieser Zeilenumbruch wird vom Browser dargestellt, erzeugt im Quelltext aber keinen Zeilenumbruch: <br />");
	echo("(3) Nachfolgendes erzeugt in beiden Fällen einen Zeilenumbruch:<br />\n");
?>
Quelltext
(1) Dieser Zeilenumbruch wird nur im Quelltext eines Browsers angezeigt: 
(2) Dieser Zeilenumbruch wird vom Browser dargestellt, erzeugt im Quelltext aber keinen Zeilenumbruch: <br />(3) Nachfolgendes erzeugt in beiden Fällen einen Zeilenumbruch:<br />
Angezeigt vom Browser
(1) Dieser Zeilenumbruch wird nur im Quelltext eines Browsers angezeigt: (2) Dieser Zeilenumbruch wird vom Browser dargestellt, erzeugt im Quelltext aber keinen Zeilenumbruch:
(3) Nachfolgendes erzeugt in beiden Fällen einen Zeilenumbruch:

Kommentare (3)

Von neu nach alt
mit den nachfolgenden Zeilen habe ich je einen Zeilenumbruch erreicht:

<?php
echo " <br /> ";
echo "Hier wird ein Zeilenumbruch erzeugt <br /> ";
?>
charly21 (Gast) #
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
ArnoNuehm (Gast) #
Hallo,

Ich möchte gerne mit PHP einen Zeilenumbruch erzwingen wie <br />
Das bekomme ich leider nicht hin.
Wie oben beschrieben, funktioniert das nicht.

Mit JS kein Problem

<style>
n1 {margin-top: 1px; display: block;}
</style>

<script>
document.createElement('n1');
</script>

Im Body: <n1 />

Hintergrund:
Ich möchte vermeiden, dass im Quellcode etliche <br />'s zu sehen sind wenn
ein PHP Script eingebunden wurde.

Irgend eine Idee?

Gruss Chrissie
Chrissie (Gast) #