Zeilenenden erkennen und ersetzen
Bastian Kurz
- php
Hallo!
Ich muß eine Textdatei Zeile für Zeile in eine Datenbank eintragen.
Die Textdatei kommt vom Mac und mein PHP erkennt scheinbar die Mac-Umbrüche nicht.
Beim Versuch, die Datei zeilenweise einzulesen erhalte ich nur eine Zeile.
Jetzt möchte ich vorher einen regulären Ausruck drüber laufen lassen, der die Zeilenendungen
in Unix-Zeilenenden übersetzt.
Wie muß ich das machen? Nach \n kann ich ja wohl schlecht suchen.
Danke schonmal, Bastian
Hallo!
Hi,
Wie muß ich das machen? Nach \n kann ich ja wohl schlecht suchen.
Ich glaube, beim Mac sind die Zeilenumbrüche nicht "\n", sondern "\r", probier das einfach mal aus.
Danke schonmal, Bastian
mfg
eb4
Hallo Bastian,
dafür empfehle ich immer wieder gerne das LineBreakTool.
Hier gibt's das: http://cpan.org/modules/by-authors/id/G/GO/GONZO/
CYa
GONZO
Hallo Bastian,
du musst beachten, dass MAC, Windows und Unix für Zeilenenden unterschiedliche Zeichen verwenden. Bei MAC ist es ein Carriage Return (hex 0D), bei Unix ein Linefeed (hex 0A) und bei Windows beides (hex 0D 0A).
Gruss Ralf
Hello,
php hat einen Schalter dafür
auto_detect_line_endings
Den musst Du nur auf 1 stellen in deinem Lesescript (ini_set() ), dann klappts auch mit dem Mac
Und wenn die Dateien nicht so groß sind und Du sicher bist, dass auch wirklich nur \r drinstehen als Zeilenende, dann lies sie komplett ein und verwende explode() oder chop(explode())
Liebe Grüße aus http://www.braunschweig.de
Tom