Bastian: Zeilenumbrüche und sinnvolles Einlesen von Textfiles

Mal wieder Mac-Zeilenumbrüche. Also in der Therorie weiß ich wohl wie man es angehen könnte.
Ich weiß aber nicht, ob das so sinnvoll ist.

Eine Textdatenbank soll eingelesen werden. Jede Zeile muß aufgesplittet werden und in einzelne
Felder einer Tabelle in die Datenbank geschrieben werden.
Problem: Die Textdatei hat Mac-Zeilenumbrüche. Ich muß also immer bis zum Zeilenendezeichen lesen, den Krams
in die DB schreiben und dann immer weiter bis EOF.
Die Textdatei ist aber recht groß. Wenn ich jedes Zeichen überprüfe, ob es ein CR ist, dann fordert das
den Server wohl recht stark und es könnte auch länger dauern, als ich es gerne hätte...
Gibt es vielleicht eine PHP-Funktion, die bis zu einem bestimmten Zeichen liest?
Wie geht man das an, ohne sinnlos Serverlast zu erzeugen?

Wie erkenne ich außerdem das CR richtig? Hexadezimal ist das Zeichen 0D. Kann ich jetzt nach \0D suchen oder muß ich
das anders schreiben \x0D ?

Danke

  1. Hi,

    Wie geht man das an, ohne sinnlos Serverlast zu erzeugen?

    Hast Du schonmal fgets($dateihandle, 4k) versucht?
    Das ließt die Datei von der aktuellen Position bis die Datenmenge ODER ein Zeilenende erreicht ist. Frage ist hier, obs den MAC-Zeilenumbruch erkennt, denke aber schon :)

    Versuchs halt mal.

    Gruss
    Stefan

  2. Hallo Bastian,

    Mal wieder Mac-Zeilenumbrüche. Also in der Therorie weiß ich wohl wie man es angehen könnte.
    Ich weiß aber nicht, ob das so sinnvoll ist.

    Eine Textdatenbank soll eingelesen werden. Jede Zeile muß aufgesplittet werden und in einzelne
    Felder einer Tabelle in die Datenbank geschrieben werden.
    Problem: Die Textdatei hat Mac-Zeilenumbrüche. Ich muß also immer bis zum Zeilenendezeichen lesen, den Krams
    in die DB schreiben und dann immer weiter bis EOF.
    Die Textdatei ist aber recht groß. Wenn ich jedes Zeichen überprüfe, ob es ein CR ist, dann fordert das
    den Server wohl recht stark und es könnte auch länger dauern, als ich es gerne hätte...
    Gibt es vielleicht eine PHP-Funktion, die bis zu einem bestimmten Zeichen liest?
    Wie geht man das an, ohne sinnlos Serverlast zu erzeugen?

    Wie erkenne ich außerdem das CR richtig? Hexadezimal ist das Zeichen 0D. Kann ich jetzt nach \0D suchen oder muß ich
    das anders schreiben \x0D ?

    Du könntest es so versuchen, indem du den Text mittels der Funktion explode() in ein Array einliest, und anhand deines bestimmten zeichens auseinandertrennen lässt. Bin mir aber nicht sicher ob bei dieser Funktion auch HEX Zeichen angegeben werden können, war gerade mal so ein Einfall. Bezugs der Performance könnte ich mich schon vorstellen, das es schneller wäre.

    freundliche Grüsse,
    Daniel

    --
    Das ist der ganze Jammer, die Dummen sind immer so sicher und die Gescheiten so voller Zweifel.
    [Bertrand Russell]