Bastian Kurz: Zeilenenden erkennen und ersetzen

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

  1. 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

  2. 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

  3. 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

  4. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen