[Gelöst] PHP Datei prüfen ob leer, nicht vorhanden, wenn vorhanden und nicht leer, Inhalt ausgeben

  • Ich sitze schon wieder den ganzen Tag vor einem ganz banalen Problem.

    Und zwar möchte ich mit PHP prüfen, ob eine Datei vorhanden ist und ob sie leer ist, wenn sie verhanden, aber nicht leer ist, soll der Inhalt ausgegeben werden.

    Aber irgendwie habe ich wieder ein Brett vor dem Kopf. :wallbash:

    Mein Code sieht derzeit in etwa so aus:

    Auch wenn ich die Datei lösche, sagt er "Datei existiert, aber ist leer:"

    :helpnew:

  • [Gelöst] PHP Datei prüfen ob leer, nicht vorhanden, wenn vorhanden und nicht leer, Inhalt ausgeben? Schau mal ob du hier fündig wirst!

  • Zur hilfreichsten Antwort springen
  • Versuchs mal mit absolutem Pfad zur Datei bei file_exists! Oder mit is_readable,damit sollten relative Pfade verwendet werden können. (soweit ich mich erinnere)


    Da fehlen auch noch geschwungene Klammern... :shy:

    Versuch mal so

    - Der Weg zur Erkenntnis: Wie frage ich nach Hilfe? | Zur Erinnerung: Forenregeln | Quatsch und Tratsch: Plauderecke -

    Einmal editiert, zuletzt von hyle (26. Dezember 2021 um 21:28) aus folgendem Grund: Ein Beitrag von hyle mit diesem Beitrag zusammengefügt.

  • Ja genau, das war es. :danke_ATDE:

  • Jetzt habe ich noch gemerkt, dass empty eine Null auch als "empty" sieht. :auslachen::lol:

    Egal, einfach andere Zahlen und noch is_numeric nehmen, dann ist gut:

    :bravo2::danke_ATDE:

  • Jetzt stehe ich trotzdem wieder auf dem Schlauch, folgender Code gibt mir ab 120 Sekunden die Minuten aus, aber er bringt mir bis zum Wert 119 zusätzlich die Ausgabe: "Ungültiger Dateiinhalt: 119 4" :conf:

    Warum ist das so ? :helpnew:

    Was mich auch stutzig macht, ist, dass er mir dann 119 4 anzeigt, obwohl 119 durch 60 keine 4 sind. :denker:

  • Zeilen 11 bis 15 gehören mit geschweiften Klammern eingefasst - als gesamter else-Zweig.

    Das war der Haken an der Sache. :bravo2::danke_ATDE:

    So geht es wie es soll:

  • Jetzt sehe ich es auch wo genau die Klammern fehlten. :)

    Auch wenn es in PHP nicht nötig ist, sollte man der Übersicht wegen auch einrücken, damit der Code lesbar bleibt.

    Die Klammern um $inhalt <= 119 und $inhalt >= 120 sind eigentlich nicht nötig, darum habe ich die weggelassen und PHP kennt elseif (Zeile 10).

    Dann $inhaltmin = floor($inhalt/60);) in den if-Block darunter gesetzt, denn wenn der Dateiinhalt ungültig ist, dann muss das auch nicht vorher berechnet werden.

    Ich hoffe ich habe nichts übersehen, denn das ganze ist natürlich ungetestet. ;)

  • Zur Vollständigkeit :)


    Das formatiert VS Code für mich ...

    Das schließende ?> ist überflüssig und sollte weggelassen werden!

    Weil: Falls danach noch was stehen würde (und wären es auch nur Leerzeilen) würde es ausgeben!

    Hier uninteressant, wenn aber die Ausgabe des Scripts (z.B. programmatisch) weiterverarbeitet wird, macht es ggf. einen Unterschied.

    den Inhalt 0 könnte man auch bei < 120 mit durchlaufen lassen ...

  • Das schließende ?> ist überflüssig und sollte weggelassen werden!

    Nein, was man öffnet schließt man auch wieder. Wenn man programmiert muss man seine Gedanken beieinander halten und nicht rumschlampen. :lol:

    Wenn nach ?> noch etwas stehen sollte, das nicht ausgegeben werden soll, dann löscht man das gefälligst oder mach einen Kommentar daraus.

  • Jein,

    Hinweis:

    Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional, und in einigen Fällen ist das Weglassen hilfreich, wenn Sie include oder require verwenden, so dass ungewollte Whitespaces nicht am Ende einer Datei auftreten und Sie noch im Stande sind, später weitere Header an die Antwort hinzuzufügen. Es ist ebenfalls praktisch, wenn Sie die Ausgabepufferung verwenden und keine ungewollten Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Teils sehen wollen.

    Die Fehlersuche wäre mir einfach zu aufwendig und ich müsste peinlich drauf achten, keine Whitespaces am Datei-Ende zu haben ...

  • Dafür gibt es (die richtigen) Editoren. Auch mit z.B. Notepad++ kann man sich nichtdruckbare Zeichen anzeigen lassen. Das hilft mir z.B. bei Python um zu erkennen ob es sich bei Einruckungen um Tabs oder Spaces handelt. ;)

    Für mich kommt es jedenfalls nicht in die Tüte den schließenden Tag wegzulassen, auch wenn dieser von php.net als Vorwand für Faulheit als optional bezeichnet wird. :baeh2:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!