2016-03-20 8 views
-2

in einer PHP-7.0.3-Umgebung habe ich auch nur ein einziges Newline-Zeichen ("\ n") und ich folgendes enthält Datei:Ist das erwartete Verhalten von der Funktion file()?

var_dump(file("test.txt", FILE_IGNORE_NEW_LINES)); 

der Ausgang ist:

array(1) { 
    [0]=> 
    string(0) "" 
} 

Welche ist falsch, da die Datei effektiv aus zwei leeren Zeilen besteht.

Wird von der Dateifunktion erwartet, die letzte Zeile zu ignorieren, wenn sie leer ist? Gibt es zuverlässige Workarounds, die sich genau wie die Dateifunktion verhalten, aber die letzte Zeile nicht ignorieren, wenn sie leer ist?

+2

Datei besteht aus einer leeren Zeile und einem neuen Zeilensymbol. Also alles ist in Ordnung. –

+0

Ja, es ist das erwartete Verhalten. – Ikari

+0

@u_mulder also, wenn eine Datei leer ist, gibt es eine leere Zeile, und wenn es einen einzigen Zeilenumbruch gibt ... gibt es noch eine leere Zeile? Ich verstehe nicht, wie das erwartet wird, sollte zwei leere Zeilen zurückgeben. – user2464424

Antwort

0

Ich denke Wikipedia fasst es ziemlich gut:

Zwei Möglichkeiten, neue Zeilen zu sehen, von denen beide selbst konsistent sind, sind die getrennte Leitungen Zeilenumbrüche oder dass sie Linien beenden. Wenn eine neue Zeile als Trennzeichen betrachtet wird, wird nach der letzten Zeile einer Datei keine neue Zeile angezeigt.

Sie könnten stattdessen FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES verwenden; es returns the empty array you expect