rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Do 03.06.2004 09:39
Titel
|
|
|
trim() schneidet nur die Leerzeichen weg, aber jede Zeile wird mit einem Zeilenumbruch, also \n (Unix), \r\n (Windows) oder \r (Mac) beendet. trim() erfasst das nicht. Da bleiben dann noch immer mehrere Zeilen über, weil sie halt einen Umbruch enthalten und nicht ganz leer sind.
Alle PHP-Funktionen, die Zeilenumbrüche erkennen, bereiten übrigens oftmals Probleme, weil sie den Mac-Zeilenumbruch irgendwie nicht richtig erfassen. Der macht unter PHP recht oft Probleme. Selbst wenn ich versuche, über ini_set zu sagen, was (Mac-)Zeilenumbrüche sind, scheinen das viele Server zu ignorieren. Auch wenn es angeblich funktionieren soll, habe ich damit fast immer Probleme gehabt. Du kannst Mac-Zeilenumbrüche in Unix- oder Windows-Umbrüche konvertieren, falls das Problem hier liegen solle:
Code: | // Mac2Unix: \r in \n verwandeln
$data = preg_replace( "/\x0D/", "\x0A", $data ); |
Du könntest damit die Zeilenende-Zeichen natürlich auch direkt löschen, indem Du einfach durch "" ersetzt.
Aber ansonsten kannst Du dein Problem natürlich auch mit einer einfachen if-Abfrage besiegen. Wenn ein Umbruch drin ist, dann nicht ins Array aufnehmen.
BTW: Wenn du nach den Umbrüchen suchst, dann gib deren Codierung am Besten hexadezimal oder oktal an und such lieber nicht nach \r, \r\n und \n.
Hexadezimal: Mac-Umbruch: \x0D
Unix-Umbruch: \x0A
Windows-Umbruch: \x0D\x0A
Zuletzt bearbeitet von rob am Do 03.06.2004 09:40, insgesamt 2-mal bearbeitet
|
|