Zeilenumbrüche werden nicht ausgegeben
Yadgar
- php
0 Sven Rautenberg0 Tom
High!
Nach längerer Zeit knöpfe ich mir mal wieder mein PHP-Buch vor (Bill McCarty, PHP Grundlagen, PHP 5 Edition) - und wundere mich, dass mit fgets() in eine Stringvariable eingelesene Textdateien ohne Zeilenumbrüche ausgegeben werden, und zwar egal, ob ich sie vorher im Editor in Windows- oder Unix-Format gespeichert habe... wie passiert so etwas?
Bis bald im Khyberspace!
Yadgar
Moin!
High!
Nach längerer Zeit knöpfe ich mir mal wieder mein PHP-Buch vor (Bill McCarty, PHP Grundlagen, PHP 5 Edition) - und wundere mich, dass mit fgets() in eine Stringvariable eingelesene Textdateien ohne Zeilenumbrüche ausgegeben werden, und zwar egal, ob ich sie vorher im Editor in Windows- oder Unix-Format gespeichert habe... wie passiert so etwas?
Wie gibst du sie denn aus? Als "text/plain", oder als "text/html"?
Überleg mal, wie HTML auf Ansammlungen von mehreren Leerzeichen, Zeilenumbrüchen und sonstigen "Whitespace" im HTML-Quelltext reagiert.
- Sven Rautenberg
High!
Wie gibst du sie denn aus? Als "text/plain", oder als "text/html"?
Einfach mit echo, in einem reinen PHP-File... ich kann mich gar nicht erinnern, dass da das Ausgabeformat irgendwie einzustellen gewesen wäre!
Überleg mal, wie HTML auf Ansammlungen von mehreren Leerzeichen, Zeilenumbrüchen und sonstigen "Whitespace" im HTML-Quelltext reagiert.
Schon klar...
Bis bald im Khyberspace!
Yadgar
Moin!
Wie gibst du sie denn aus? Als "text/plain", oder als "text/html"?
Einfach mit echo, in einem reinen PHP-File... ich kann mich gar nicht erinnern, dass da das Ausgabeformat irgendwie einzustellen gewesen wäre!
Es gibt die header()-Funktion, die einen Content-Type ausgeben kann.
Überleg mal, wie HTML auf Ansammlungen von mehreren Leerzeichen, Zeilenumbrüchen und sonstigen "Whitespace" im HTML-Quelltext reagiert.
Schon klar...
Dann ist dir jetzt geholfen?
- Sven Rautenberg
Hello,
High!
Nach längerer Zeit knöpfe ich mir mal wieder mein PHP-Buch vor (Bill McCarty, PHP Grundlagen, PHP 5 Edition) - und wundere mich, dass mit fgets() in eine Stringvariable eingelesene Textdateien ohne Zeilenumbrüche ausgegeben werden, und zwar egal, ob ich sie vorher im Editor in Windows- oder Unix-Format gespeichert habe... wie passiert so etwas?
Die "Zeilenumbrüche" sind schon noch drin in der Stringvariable, vorausgesetzt, Du hast die Anzahl der zulesenden Zeichen groß genug eingestellt.
01234567890rn01234567890rn01234567890rn
Lese jeweils 14 Zeichen, aber längstens bis zum "Zeilenumbruch"
01234567890rn
sammele das Ergebnis in einer Stringvariablen
01234567890rn01234567890rn01234567890rn
und schreib das Ergebnis auf den HTML-Browser
01234567890rn01234567890rn01234567890rn
Spannend wird das erst, wenn Du nur 12 Zeichen für length eingibst und nach jedem Lesevorgang einen Umbruch ausgeben lässt.
01234567890r
n
01234567890r
n
01234567890r
n
Wenn jetzt der Browser auch noch veranlasst wird, die \r und \n als Umbrüche anzusehen, wird es ganz lustig:
01234567890r
n
01234567890r
n
01234567890r
n
Ein einzelnes \r oder \n stellt er dann auch jeweils als einzelnen Zeilenumbruch dar, ein zusammenhängendes \r\n aber nur als einen gemeinsamen.
Das kleine Spielscript hier "visualisert" das etwas.
<?php ### fgets_linelen.php ###
($fh = fopen('text_num_PC.txt','rb')) or die('kann Datei nicht öffnen');
echo "<pre>\n";
while (!feof($fh))
{
$line = fgets($fh, 10);
echo '|'.strlen($line).'|', $line."<br />\n";
}
fclose($fh);
echo "</pre>\n";
?>
brauchst Dir nur eine passende Textdatei z.B. mit
0123456789
01234567890123456789
012345678901234567890123456789
0123456789012345678901234567890123456789
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
