Yadgar: Zeilenumbrüche werden nicht ausgegeben

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

  1. 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

    --
    "Love your nation - respect the others."
    1. 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

      1. 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

        --
        "Love your nation - respect the others."
  2. 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 :-)