Tom: Zeilenumbrüche werden nicht ausgegeben

Beitrag lesen

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 :-)