Olliver: String zeilenweise in Array packen

Ich würde gerne in PHP einen String (enthält Zeilenumbrüche) zeilenweise in einen Array packen, genauso wie es file() tut, nur halt dass ich keine Datei sondern einen String vorliegen habe. Wie mache ich das am besten?

  1. Hi,

    Ich würde gerne in PHP einen String (enthält Zeilenumbrüche) zeilenweise in einen Array packen, genauso wie es file() tut, nur halt dass ich keine Datei sondern einen String vorliegen habe. Wie mache ich das am besten?

    explode

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Ich würde gerne in PHP einen String (enthält Zeilenumbrüche) zeilenweise in einen Array packen, genauso wie es file() tut, nur halt dass ich keine Datei sondern einen String vorliegen habe. Wie mache ich das am besten?

      explode

      cu,
      Andreas

      Hm, danke... aber ich weiß nicht wie das da mit unterschiedlichen Zeilenumbrüchen (Win/Mac/Unix) ist.

      Ich will im Prinzip eine Nachricht "quoten", also aus

      a
      b
      c

      soll

      a
      b
      c

      werden.

      1. Hallo,

        die Zeilenumbrüche in den Editoren (Mailprogrammen) sind immer #10. Es steht zwar in ganz vielen Dokumentationen was #13#10, das ist aber scheinbar nicht richtig. Ich habe mich die letzten Wochen durch diverse Mailclients und durch die RFCs gekämpft.

        Wenn man #13#10 für die Trennung von Zeilen bei mit bas64-codierten Datenblöcken einsetzt, mögen das die Mailserver überhaupt nicht. Es wird sowohl #13 als auch #10 als eigenständiger Umbruch angesehen. Und zwei Umbrüche bedeuten eine Leerzeile, und die beendet den Content-Block.

        Reduzier Deine Umbrüche also erst mal mit str_replace() auf #10 und explode dann.

        Grüße

        Chris (C)

      2. Hallo Olliver,

        Hm, danke... aber ich weiß nicht wie das da mit unterschiedlichen Zeilenumbrüchen (Win/Mac/Unix) ist.

        Ein geeigneter regulärer Ausdruck wäre: "/\015\012|\015|\012/"

        Suche im Archiv nach \015\012 und Du wirst eine Erklärung dazu finden.

        Mit diesem Ausdruck könntest Du dann z.B. preg_split füttern, wenn Du es umständlich machen willst, erst preg_replace und dann explode.

        Ich will im Prinzip eine Nachricht "quoten",

        Dann dürfte der m-Modifikator bei preg_replace für Dich nützlich sein.

        Viele Grüße,
        Christian

    2. Hallo,

      explode

      ???
      nix für ungut, aber ich finde du hast überreagiert :-)

      bye eddie