Tobias Merkl: auslesen bestimmer zeichen eines emailbody

Hallo,

stehe vor folgendem Problem. Möchte aus einem eMailtext etwas auslesen. Angenommen das Layout der eMail ist immer gleich, möchte ich aus der Zeile 10, alles ab dem 20. Zeichen (Wort?) auslesen bis zum Zeilenende. Es muss irgendwie möglich sein.

Den Rest an Infos bekomme ich ja aus dem Header ohne Probleme.
Vielen Dank schon mal für evtl. Tipps.

Mfg,

Tobias

  1. Hallo Tobias,

    stehe vor folgendem Problem. Möchte aus einem eMailtext etwas auslesen.

    Der Emailtext steht Dir aber schon zur Verfügung, oder? Ich meine damit, Du musst Dir keine Gedanken machen, wie Du an ihn kommst, da Du ihn schon auf die eine oder andere Weise hast, oder?

    Angenommen das Layout der eMail ist immer gleich, möchte ich aus der Zeile 10, alles ab dem 20. Zeichen (Wort?) auslesen bis zum Zeilenende. Es muss irgendwie möglich sein.

    Zuerst trennst Du den Emailtext anhand des Zeilentrenners auf:

    $email_lines = preg_split ('!\015\012|\015|\012!', $email_text);

    Danach greifst Du auf die 10. Zeile zu:

    $zeile_zehn = $email_lines[9]; // arrays fangen bei 0 an

    Daraufhin greifst Du mit substr auf das 20. Zeichen zu:

    $gewollter_text = substr ($zeile_zehn, 20); // alles ab dem 20. Zeichen lesen

    Christian

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    1. Moin nochmal an alle,

      den emialtext habe ich schon in der datenbank gespeichert, das problem ist
      schon mal gelöst, aber nun meine frage zu folgendem befehtl:

      $email_lines = preg_split ('!\015\012|\015|\012!', $email_text);

      was genau wird da gemacht, bzw. was bedeuten die zahlenangaben (!\015, etc.)
      in dern klammern?

      udn noch was *g
      aus zeile 10 auslesen ist klar.
      wenn ich folgenden text IMMER in dieser zeile habe:

      Käufer: MEINNAME: MEINE@EMAIL

      wie kann ich NUR die emailadresse auslesen?
      danke schon mal für die antwort!

      1. Hallo Tobias,

        $email_lines = preg_split ('!\015\012|\015|\012!', $email_text);
        was genau wird da gemacht, bzw. was bedeuten die zahlenangaben (!\015, etc.)
        in dern klammern?

        Naja, jetzt wo Du es ansprichst seh' ich gerade, dass das nicht ganz stimmt. Ups. ich meinte natürlich doppelte Anführungszeichen:

        $email_lines = preg_split ("!\015\012|\015|\012!", $email_text);

        \0ZZ (Z = Ziffer zwischen 0 und 7) gibt eine Zahl im Oktalsystem an. (Funktioniert natürlich nur in doppelten Anführungszeichen) Um eine Zeile zu trennen gibt es drei Varianten:

        Windows: \015\012 (also zwei Zeichen, ASCII-Codes 13, 10)
        UNIX: \012 (also ein Zeichen, ASCII-Code 10)
        Mac: \015 (also ein Zeichen, ASCII-Code 13)

        Um diese zu erkennen musst Du zuerst nach \015\012 suchen, und danach erst nach dem Rest, sonst verwandelt er bei Windowssystemen einen Zeilenumbruch in zwei.

        preg_split trennt nach einem regulären Ausdruck, das ist im Handbuch erklärt.

        udn noch was *g
        aus zeile 10 auslesen ist klar.
        wenn ich folgenden text IMMER in dieser zeile habe:

        Käufer: MEINNAME: MEINE@EMAIL

        wie kann ich NUR die emailadresse auslesen?

        Trenne die Zeile mit folgendem regulären Ausdruck auf: '/:\s*/' (mit preg_split) Dann hast Du ein Array, das so aussieht: ('Käufer', 'MEINNAME', 'MEINE@EMAIL')

        Christian

        --
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.