Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Neue Zeile mit \n\n -Anfängerfrage
Frage
Hallo guten Morgen,
ein Anfängerproblem:
<?php
$umg_bro = getenv(HTTP_USER_AGENT);
echo ´der browser ist: ´ .$umg_bro ."\n\n" .´zu sehen´; ?>
Kann mir jemand sagen, warum der String "zu sehen" nicht in der nächsten Zeile sondern in der gleichen ausgegeben wird?
"\n" ist doch vorhanden.
Antwort 1 von DeluxeStyle
ja, weil html keine \n Zeilenumbrüche kennt.
du müsste es so schreiben
du müsste es so schreiben
<?php
$umg_bro = getenv(HTTP_USER_AGENT);
echo ´der browser ist: ´ .$umg_bro ."<br>" .´zu sehen´; ?>Antwort 2 von Supermax
In HTML werden Zeilenvorschübe (ebenso wie Tabulatorzeichen \t) wie Leerzeichen ("whitespace") behandelt.
Um einen HTML-Zeilenvorschub einzufügen, musst du das <br>-Tag verwenden; alternativ kannst du dem Browser auch mit
mitteilen, daß es die Ausgabe als reinen Text darstellen soll; dann werden auch Zeilenvorschübe als solche interpretiert.
Die header()-Funktion muss allerdings ganz am Anfang der Seite aufgerufen werden, noch bevor die erste Ausgabe erfolgt, sonst bekommst du eine Fehlermeldung!
Um einen HTML-Zeilenvorschub einzufügen, musst du das <br>-Tag verwenden; alternativ kannst du dem Browser auch mit
header("Content-Type: text/plain");mitteilen, daß es die Ausgabe als reinen Text darstellen soll; dann werden auch Zeilenvorschübe als solche interpretiert.
Die header()-Funktion muss allerdings ganz am Anfang der Seite aufgerufen werden, noch bevor die erste Ausgabe erfolgt, sonst bekommst du eine Fehlermeldung!
Antwort 3 von Mel
Zitat:
ja, weil html keine \n Zeilenumbrüche kennt.
du müsste es so schreiben
<?php
$umg_bro = getenv(HTTP_USER_AGENT);
echo ´der browser ist: ´ .$umg_bro ."<br>" .´zu sehen´; ?>
ja, weil html keine \n Zeilenumbrüche kennt.
du müsste es so schreiben
<?php
$umg_bro = getenv(HTTP_USER_AGENT);
echo ´der browser ist: ´ .$umg_bro ."<br>" .´zu sehen´; ?>
es gibt doch den Befehl \n (line feed) für PHP.
anders herum gefragt:
wie muss ich das denn schreiben, damit der Interpreter " \n" als BEfehl für neue Zeile erkennt?
bis gleich
Mel
Antwort 4 von Supermax
PHP selbst wandelt das \n in einem String schon korrekt in einen Zeilenvorschub um. Der Webbrowser zeigt Zeilenvorschübe bei der HTML-Darstellung allerdings nicht an, sondern behandelt diese wie Leerzeichen; das hat an sich nichts mit PHP zu tun, sondern liegt im HTML-Standard begründet.
Antwort 5 von regi34
das PHP-Skript wird intepretiert und dabei heraus kommt eine HTML-Datei.
in dieser HTML-Datei stehen an Stelle der "\n" dan nZeilenumbrüche, das ist allerdings nur im Quellcode der HTML-Seite zu sehen.
Bei der Darstellung von HTML-Code werden lediglich <br>-tags als Zeilenumbruch interpretiert, \n ist nur der Zeilenumbruch im Quellcode
in dieser HTML-Datei stehen an Stelle der "\n" dan nZeilenumbrüche, das ist allerdings nur im Quellcode der HTML-Seite zu sehen.
Bei der Darstellung von HTML-Code werden lediglich <br>-tags als Zeilenumbruch interpretiert, \n ist nur der Zeilenumbruch im Quellcode
Antwort 6 von Mel
Irgendwie versteh ich nicht ganz.
anderes Beispiel , das wie gewohnt mit /n/n einwandfrei funktioniert.
Mit diesem Code schickt er mir einwandfrei die EMail mit Zeilenumbrüchen.
Warum denn in dem von mir anfangs angegebenen nicht?
Sorry, wenn ich nerve
Mel
anderes Beispiel , das wie gewohnt mit /n/n einwandfrei funktioniert.
$text ="Verschickt am " . $Datum . " um " . $stunde . "h \n\n";
$text.="de: " . $_POST["vorname"] ." " .$_POST["name"] . "\n\n\n\n";
$text.="Inhalt der Email:\n\n";
$text.="$Weiteres" . "\n\n\n\n"; Mit diesem Code schickt er mir einwandfrei die EMail mit Zeilenumbrüchen.
Warum denn in dem von mir anfangs angegebenen nicht?
Sorry, wenn ich nerve
Mel
Antwort 7 von rabies
Das ist der Fall, solange Deine Mail Plaintext ist. Plaintext - reiner Text - also praktisch wie der Quelltext. Anders wäre es, wenn Du eine HTML-Mail verschickst. Dort müsstest Du auch "<br/>" bzw. "<br>" machen.
So, wie´s in der ersten Antwort steht. Mit ´nem "<br>"
also so:
Zur Erklärung, warum ich jetzt beide Sachen verwendet habe:
Einmal möchte ich, dass mein Quelltext übersichtlich bleibt ;-) also mach ich ein \n rein. Andererseits möchte ich aber auch, dass ich bei der Ausgabe (in HTML) auch wirklich einen Zeilenumbruch habe. Also mach ich ein <br>
hth,
Sven.
Zitat:
wie muss ich das denn schreiben, damit der Interpreter " \n" als BEfehl für neue Zeile erkennt?
wie muss ich das denn schreiben, damit der Interpreter " \n" als BEfehl für neue Zeile erkennt?
So, wie´s in der ersten Antwort steht. Mit ´nem "<br>"
also so:
echo "der Browser ist: " .$umg_bro ."<br>\n zu sehen"; ?>
Zur Erklärung, warum ich jetzt beide Sachen verwendet habe:
Einmal möchte ich, dass mein Quelltext übersichtlich bleibt ;-) also mach ich ein \n rein. Andererseits möchte ich aber auch, dass ich bei der Ausgabe (in HTML) auch wirklich einen Zeilenumbruch habe. Also mach ich ein <br>
hth,
Sven.
Antwort 8 von Risatara2
Schau dir doch einfach mal den Quellcode deiner Seite (im IE unter Ansicht -> Quelltext ) an, dort siehst du die Zeilenumbrüche. Und wenn du willst, dass PHP \n in <br> umwandelt, kannst du es mit nl2br() erreichen. Aber das is etwas umständlich, wenn du den Text eh im Code bearbeitest, dann ist das <br> selbst zu schreiben auf jeden Fall ratsamer, weil nicht zuletzt das auch schneller geht.
Antwort 9 von Mel
Soooo,
ich hatte das Wort Zeilenumbruch mit Zeilenvorschub gleichgesetzt. Jetzt ist es mir absolut klar und verständlich.
War auch super hilfreich, daß ganze noch mal im Quelltext zu sehen.
Super vielen Dank für die Dumpfbackenhilfe
Gruss Mel
ich hatte das Wort Zeilenumbruch mit Zeilenvorschub gleichgesetzt. Jetzt ist es mir absolut klar und verständlich.
War auch super hilfreich, daß ganze noch mal im Quelltext zu sehen.
Super vielen Dank für die Dumpfbackenhilfe
Gruss Mel

