dedlfix: Flatfile-db | Pagination zusammen mit Tags/Kategorien verwenden

Beitrag lesen

Tach!

In der Beschreibung von file() las ich, das sei nun auch binary safe. Wie kann ich mir das denn vorstellen? Eine formatfreie Textdatei mit Line Endings (also die EoL sind die einzige Formatvorgabe), wie kann die eine binary safe Lesefunktion haben? In Bildern kommen durchaus 0Dh und 0Ah vor.

Darum geht es nicht. Zum Beispiel ist der Container als solcher wasserdicht. Wenn er in s Wasser fällt, bleibt der Inhalt trocken. Wenn du darin aber kaputtgegangene Wasserflaschen und wasserempfindliches Zeug transportierst, nützt dir die äußere Wasserundurchlässigkeit auch nichts mehr.

file() kann problemlos alle übergebenen Bytes von 0 bis 255 lesen. Es gibt ja einige Bytes/Zeichen, die haben in bestimmten Umgebungen eine Sonderbedeutung: 0x00 - Stringende, 0x1A Dateiende. Unter solchen Bedingungen kann man keine Binärdaten verarbeiten, wenn darin diese Bytes vorkommen, weil sonst ein Ende erkannt wird und der Rest verlorengeht.

Das Problem allerdings ist, dass Bytes für Zeilenumbruchszeichen weiterhin als solche erkannt werden und daraufhin eine neuer Eintrag im Array entsteht. Das ist gemäß der Aufgabenbeschreibung von file() auch richtig so. Die Bytes der Zeilenumbruchszeichen sind somit nicht als Bestandteil der Daten verwendbar, wenn das kein Zeilenumbruch darstellen soll. file() ist auch keine geeignete Funktion, um serialize()te Daten zu lesen. (file_get_contents() geht aber.)

CSV ist in dem Fall ein geeigneteres Format. Das kennt entsprechende Maskierregeln, auch um Felder in Datensätzen sicher wiederzuerkennen, nicht nur Zeilen. PHPs fgetcsv/fputcsv-Funktionen arbeiten aber weiterhin mit Dateisystemfunktionen zusammen und ersparen einem nicht das File-Locking.

dedlfix.