Klansman: Regulärer Ausdruck - Frage

Hallo...

ich bin im Moment grade dran, einen PHP-basierte Webmail-Applikation zu entwickeln. Die soll natürlich auch mit Attachments umgehen können, das klappt auch ganz gut, wenn es sich um MIME-Attachments handelt.

Es gibt aber auch Typen, die UUencode-Attachments versenden, innerhalb der Mail sieht das so aus (es ist eine Nur-Text-Nachricht):

(Nachrichtentext)

begin (modus) (dateiname)
HIER SIND DIE UU-KODIERTEN DATEN
end

Wenn es mehrere solche Attachments hat, wird dieser ganze begin-end - Block wiederholt.

Nun müsste ich, um das Zeug behandeln zu können die kodierten Daten und natürlich den Dateinamen herauslesen, habe das mit einem regulären Ausdruck versucht:

preg_match_all("|begin\s\s[\n]|",$var,$match);

$var ist der Roh-Text.

Der obige Ausdruck gibt mir modus und dateiname im $match-Array zurück, soweit funktioniert alles.

Wenn ich jetzt aber die kodierten Daten holen will, weiss ich nicht, wie weiterfahren, habe schon vieles probiert. Das Ganze soll ja beim end aufhören, das end soll nicht mehr dabei sein.

Vielleicht weiss jemand, wie dies zu bewerkstelligen ist,

auf jeden Fall schon mal besten Dank im Voraus...

Klansman

  1. Hi!

    (Nachrichtentext)

    begin (modus) (dateiname)
    HIER SIND DIE UU-KODIERTEN DATEN
    end

    Wenn es mehrere solche Attachments hat, wird dieser ganze begin-end - Block wiederholt.

    Nun müsste ich, um das Zeug behandeln zu können die kodierten Daten und natürlich den Dateinamen herauslesen, habe das mit einem regulären Ausdruck versucht:

    preg_match_all("|begin\s (.*)[\n]|",$var,$match);

    $var ist der Roh-Text.

    Der obige Ausdruck gibt mir modus und dateiname im $match-Array zurück, soweit funktioniert alles.

    Wenn ich jetzt aber die kodierten Daten holen will, weiss ich nicht, wie weiterfahren, habe schon vieles probiert. Das Ganze soll ja beim end aufhören, das end soll nicht mehr dabei sein.

    Mach das doch so wie oben, nur eben weiter:

    preg_match_all("/begin ([0-7]{3}) (.*?)\n(.*)\nend/",$var,$match);

    Grüße
    Andreas

    1. Hi!

      (Nachrichtentext)

      begin (modus) (dateiname)
      HIER SIND DIE UU-KODIERTEN DATEN
      end

      Wenn es mehrere solche Attachments hat, wird dieser ganze begin-end - Block wiederholt.

      Nun müsste ich, um das Zeug behandeln zu können die kodierten Daten und natürlich den Dateinamen herauslesen, habe das mit einem regulären Ausdruck versucht:

      preg_match_all("|begin\s (.*)[\n]|",$var,$match);

      $var ist der Roh-Text.

      Der obige Ausdruck gibt mir modus und dateiname im $match-Array zurück, soweit funktioniert alles.

      Wenn ich jetzt aber die kodierten Daten holen will, weiss ich nicht, wie weiterfahren, habe schon vieles probiert. Das Ganze soll ja beim end aufhören, das end soll nicht mehr dabei sein.

      Mach das doch so wie oben, nur eben weiter:

      preg_match_all("/begin ([0-7]{3}) (.*?)\n(.*)\nend/",$var,$match);

      Grüße
      Andreas

      Hallo!

      Erst mal vielen Dank für die Hilfe, dein Ausdruck ist plausibel und ich bin mir auch sicher das er stimmt... Irgendwie funktioniert es aber noch nicht, aber das liegt wohl nicht am Ausdruck. Wahrscheinlich ist irgendwas mit dem Inhalt von $var nicht in Ordnung, ich werde das mal anschauen.

      Danke nochmals!

      1. Hi!

        preg_match_all("/begin ([0-7]{3}) (.*?)\n(.*)\nend/",$var,$match);

        Grüße
        Andreas

        Hallo!

        Erst mal vielen Dank für die Hilfe, dein Ausdruck ist plausibel und ich bin mir auch sicher das er stimmt... Irgendwie funktioniert es aber noch nicht, aber das liegt wohl nicht am Ausdruck. Wahrscheinlich ist irgendwas mit dem Inhalt von $var nicht in Ordnung, ich werde das mal anschauen.

        vermutlich liegt es am Zeilenumbruch, damit hatte ich auch schonmal Probleme, vielleicht hilft statt \n einfach \s+

        Grüße
        Andreas