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
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)
