Zeilenumbruch per \n oder \n\r funktioniert nicht...

Hektik

Erfahrenes Mitglied
Hallo!

Ich habe gelernt, dass ich bei der php-Programmierung per \n\r auf meinem Windows-Webserver einen Umbruch im generierten HTML-Code erzeugen kann.

Ich habe mir weiterhin angewöhnt, den Inhalt von echo in ' einzufassen, statt in ", damit ich nicht jedes " per Backslash escapen muss.

Beispiel:

PHP:
echo '<div style="margin:5px" class="grau">';
echo 'Beispiel';
echo '</div>';

Wenn ich jetzt aber am Zeilenende eben jenen Code-Zeilenumruch hinzufüge:

PHP:
echo '<div style="margin:5px" class="grau">\n\r';
echo 'Beispiel\n\r';
echo '</div>\n\r';

so wird dieser mir auch im anschließenden HTML-Code angezeigt:

HTML:
<div style="margin:5px" class="grau">\n\rBeispiel\n\r</div>\n\r

und von den Zeilenumbrüchen fehlt jede Spur.

Meine Frage: Warum ist das so?
 
Hallo,

du hast dir in deinem Post ja eigentlich die Antwort schon selbst gegeben.

Ich habe mir weiterhin angewöhnt, den Inhalt von echo in ' einzufassen, statt in ", damit ich nicht jedes " per Backslash escapen muss.

Genau aus diesem Grunde werden die Zeilenumbrüche nicht generiert - da der "Code" welcher sich zwischen den ' ' befindet nicht geparts wird.

Um dir das vielleicht noch ein bischen zu verdeutlichen:
PHP:
<?php

$foo = "test";

echo $foo; // Ausgabe: test
echo "$foo"; // Ausgabe: test
echo '$foo'; // Ausgabe:

// selbiges gilt für das

echo "da kommt ein Zeilenumbruch\nDas ist die zweite Zeile";

//ergibt (gilt aber nur für die Ausgabe des Quelltextes:
//da kommt eine Zeilenumbruch
//Das ist die zweite Zeile

echo 'da kommt ein Zeilenumbruch\nDas ist die zweite Zeile';

//ergibt: da kommt ein Zeilenumbruch\nDas ist die zweite Zeile

?>
 
Zuletzt bearbeitet:
Es gibt mehrere Möglichkeiten Zeilenumbruchzeichen auszugeben, etwa mithilfe der chr()-Funktion (chr(0x0D).chr(0x0A)), durch Wechsel der Zeichendeklarationszeichen ('foo'."\r\n".'bar'), mithilfe einer Konstante (define('CRLF', "\r\n") … 'foo'.CRLF.'bar'), mithilfe einer eigengen Funktion, etc. Es gibt wirklich fast unzählige Möglichkeiten.
 
Ich kennzeichne Strings in der Regel auch mit ' anstelle von ", wenn ich aber mal einen Zeilenumbruch oder aehnliches ausgeben will arbeite ich mit ". Zum Teil nutze ich auch beides.
Mal ein paar kurze Beispiele:
PHP:
echo 'Nur Text';
echo "Nur Text mit Zeilenumbruch\n";
echo 'Etwas Text und eine '.$variable." mit Zeilenumbruch\n";
Du kannst es natuerlich so
PHP:
echo 'Zeile 1.'."\n".'Zeile 2.'."\n";
machen, jedoch find ich das dann doch etwas uebertrieben.
 
Mal so nebenbei: Kann man das auch mit einfachem HTML im PHP-Block realisieren?

Bsp.:

PHP:
<?php
//Nicht zum Nachsprechen geeignet :D
echo "Brautkleid bleibt Brautkleid und<br />Blaukraut bleibt Blaukraut!";
?>
 
Ein <br>-Tag ist ja kein richtiger Zeilenumbruch.
Von PHP wird dadurch immer noch alles in eine Zeile geschrieben, nur die Darstellung im Browser selbst hat einen Zeilenumbruch. Aber wenn Du Dir den Quellcode ansiehst ist dort keiner, nur das <br>. Mit \n bekommst Du einen richtigen Zeilenumbruch, den siehst Du dann im Quelltext, aber nicht in der Browser-Ansicht, denn Umbrueche haben ja in HTML keinen Effekt.
 
Zurück