Olaf: Datei auf "Leer" überprüfen?

Hallo,

kann ich denn in PHP eine Text-Datei, die größer als 0 Byte ist, einfach dahingehend überprüfen, ob der Inhalt nicht
nur aus Leerzeichen besteht?

Danke

Olaf

  1. Hi,

    obs was vorgefertigtes gibt weiß ich nicht, aber mit einer Kombination aus file_get_contents und trim sollte es gehen.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hallo,

      vielen Dank. Ich glaube file_get_contents ist mein Freund....

      Gruß Olaf

  2. Hallo Olaf,

    kann ich denn in PHP eine Text-Datei, die größer als 0 Byte ist, einfach dahingehend überprüfen, ob der Inhalt nicht
    nur aus Leerzeichen besteht?

    Naja, mit file_get_contents einlesen und dann entweder gucken, ob trim($inhalt) == '' ist oder dies per reguläre Ausdrücke tun.

    Viele Grüße,
    Christian

  3. Hallo Olaf,

    kann ich denn in PHP eine Text-Datei, die größer als 0 Byte ist, einfach dahingehend überprüfen, ob der Inhalt nicht nur aus Leerzeichen besteht?

    die einfachste Lösung, die mir momentan einfällt: Die gesamte Datei in einen String einlesen, dann alle führenden und abschließenden Leerzeichen entfernen und schließlich die Länge des resultierenden Strings auf Null prüfen.

    So long,
     Martin

    --
    Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
  4. gudn tach!

    kann ich denn in PHP eine Text-Datei, die größer als 0 Byte ist, einfach dahingehend überprüfen, ob der Inhalt nicht
    nur aus Leerzeichen besteht?

    die loesungen der anderen sind alle gut, aber wenn du ueber die zu checkende datei nichts weisst, ausser, dass sie nicht 0 byte gross ist und wirklich nur wissen willst, ob sie _nur_ aus leereichen besteht, dann wuerdest du gefahr laufen, dass es bei grossen dateien recht lange dauern kann sie via file oder file_get_contents einzulesen (oder irre ich mich da? ich kenne die vorgehensweise von php da nicht genau).

    deshalb wuerde ich bloss die ersten beiden zeilen (mit fgets) einlesen und abbrechen, falls eine zweite zeile existiert. anschliessend kann man die erste zeile mit
    if(trim($first_line, ' ')==='') { /* nur leerzeichen */}
    checken.

    prost
    seth

    1. Hallo seth,

      [...] dann wuerdest du gefahr laufen, dass es bei grossen dateien recht lange dauern kann sie via file oder file_get_contents einzulesen (oder irre ich mich da? ich kenne die vorgehensweise von php da nicht genau).

      über diese Funktionen kann ich auch nur mutmaßen; ich vermute aber, dass der Zeitbedarf nicht wesentlich größer ist als der für das anschließende trim() auf den gesamten Pufferinhalt. Das bissl File-I/O dürfte im Verhältnis zur internen dynamischen Speicherverwaltung von PHP kaum ins Gewicht fallen.

      deshalb wuerde ich bloss die ersten beiden zeilen (mit fgets) einlesen und abbrechen, falls eine zweite zeile existiert. anschliessend kann man die erste zeile mit
      if(trim($first_line, ' ')==='') { /* nur leerzeichen */}
      checken.

      Jaaa...
      Das ist 'ne gute Idee, falls der OP mit dem Begriff "Leerzeichen" wirklich nur Spaces (20h) gemeint hat. Falls er aber den Begriff etwas weiter fassen möchte und alles einschließen will, was üblicherweise unter dem Begriff "Whitespace" läuft, ist dein Vorschlag keine Alternative mehr.

      Okay, man kann natürlich auch etwas Aufwand treiben und die Datei häppchenweise in einen kleineren Puffer lesen, trim() darauf loslassen, und beim ersten Vorkommen eines Reststrings mit einer Länge >0 die Aktion beenden. Bei sehr großen Dateien spart das möglicherweise etwas Zeit; aber ich glaube nicht, dass das im wahrnehmbaren Bereich liegt.

      So long,
       Martin

      --
      Man soll den Tag nicht vor dem Abend loben.
      Und den Mann nicht vor dem Morgen.
        (alte Volksweisheit)
      1. gudn tach!

        über diese Funktionen kann ich auch nur mutmaßen; ich vermute aber, dass der Zeitbedarf nicht wesentlich größer ist als der für das anschließende trim() auf den gesamten Pufferinhalt.

        je nach filesize waere auch noch fgetc in erwaegung zu ziehen. aber das wird evtl. wieder laenger dauern, weil jedesmal von neuem die datei gelesen werden muss(?).

        deshalb wuerde ich bloss die ersten beiden zeilen (mit fgets) einlesen und abbrechen, falls eine zweite zeile existiert. anschliessend kann man die erste zeile mit
        if(trim($first_line, ' ')==='') { /* nur leerzeichen */}
        checken.

        Jaaa...
        Das ist 'ne gute Idee, falls der OP mit dem Begriff "Leerzeichen" wirklich nur Spaces (20h) gemeint hat.

        deswegen habe ich "nur" in "nur leer[z]eichen" unterstrichen.
        in der regel meint man das damit. fuer whitespace werden dann eher solche begriffe wie leerraum, zwischenraumzeichen, leerstelle oder weissraum verwendet.

        prost
        seth