Ermitteln eines Zeilenumbruchs

7

Das Folgende ist Teil meiner Funktion, die eine Datei öffnet und den Zeiger an das Ende setzt. Dann testet es jedes Zeichen $char in umgekehrter Reihenfolge, bis es eine neue Zeile oder ein Wagenrücklaufzeichen findet.

Das Problem ist, dass diese Zeichen nicht erkannt werden.

Die Funktion ist wie folgt:

%Vor%

Es schafft nie print("YAY") , aber es testet erfolgreich jedes Zeichen. Die Datei, die es liest, hat definitiv Zeilenumbrüche. (Die Datei wurde von einer anderen Funktion erstellt, in die "\n" eingefügt wurde. Diese wird darin angezeigt und wird in meiner IDE erfolgreich als alternative Zeile angezeigt.)

Weiß jemand, warum er diese Zeilenumbruchzeichen nicht erkennen kann?

    
George Reith 05.01.2012, 16:17
quelle

3 Antworten

10

Sie verwenden '\n' anstelle von "\n" .

%Vor%     
Xeoncross 05.01.2012, 16:19
quelle
14

Um Ihre Code-Plattform agnostisch zu machen, ist es besser, wenn Ihre Bedingung wie folgt lautet:

%Vor%

Danke an @ Félix Gagnon-Grenier Kommentar unten.

PHP_EOL funktioniert möglicherweise nicht mit Strings, die von anderen Systemen kommen. PHP_EOL repräsentiert das Endline-Zeichen für das aktuelle System.

Um alle Arten von Newline-Zeichen einschließlich Unicode-Zeilenumbrüchen zu erkennen, verwenden Sie \R :

%Vor%

\R entspricht (?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029})

Code-Demo

    
anubhava 05.01.2012 16:23
quelle
2

verwenden doppelte Anführungszeichen anstelle von einfachen Anführungszeichen um "\ n" und "\ r"

Ich hatte vor einiger Zeit einen ähnlichen Alptraum, bis ich erkannte, dass php keine Escape-Zeichen verwendet, es sei denn, sie sind in Anführungszeichen gesetzt.

    
Jimmery 05.01.2012 16:20
quelle

Tags und Links