torstene
Goto Top

Mit preg-match Zeilenumbrüche finden

Ich will den MIME-Header von E-Mails auswerten. Bei manchen E-Mails ist
jedoch hinter "Message-ID" keine Leerstelle und dann die ID sondern ein
Zeilenumbruch. D.h. die ID steht dann in der Folgezeile.

Dieser Versuch klappt, wenn die ID in der gleichen Zeile steht
$pattern = '/Message-ID\:\ (.*)/m';  

Aber wie suche ich, wenn die ID in der 2. Zeile steht
Die Zeile schaut dann so aus

Message-ID:(Zeilenumbruch)
(Leerstelle)ID(Zeilenumbruch)

Torsten.E

Content-Key: 182753

Url: https://administrator.de/contentid/182753

Printed on: April 18, 2024 at 23:04 o'clock

Member: mak-xxl
mak-xxl Mar 28, 2012 at 16:43:19 (UTC)
Goto Top
Moin TorstenE,

wenn Du es mit dem Modifikator 'm' vorhast, dann etwa so:

$pattern = '/Message-ID\:([ ]|$[ ])[0-9]+$/mi';  

Wenn Du nur 2-zeilige Suchen vorhast, schreibst Du statt der OR-Klammer so:

$pattern = '/Message-ID\:$[ 0-9]+$/mi';  

Wenn Du ohne den Modifikator 'm' arbeiten willst, dann etwa so:

$pattern = '/Message-ID\:([ ]|[$ ])[0-9]+[$]/i';  

Wenn Du nur 2-zeilige Suchen vorhast, schreibst Du statt der OR-Klammer so:

$pattern = '/Message-ID\:[$ 0-9]+[$]/i';  

Freundliche Grüße von der Insel - Mario
Member: TorstenE
TorstenE Mar 28, 2012 at 16:48:33 (UTC)
Goto Top
Hey Mario

danke für den Tipp, klappt aber nicht.
Auf wunsch stell ich eine Testdatei zur Verfügung, einfach PM.

Es sieht so aus, als ob der Zeilenumbruch selbst nicht erkannt wird (aber nur eine Laien-Ahnung)

Torsten.E
Member: Midivirus
Midivirus Mar 28, 2012 at 19:05:03 (UTC)
Goto Top
die Frage ist doch: Ist es ein Zeilenumbruch oder doch ein anderes Zeichen? siehe ASCII und http://www.php.net/manual/de/function.ord.php
Member: TorstenE
TorstenE Mar 29, 2012 at 11:35:49 (UTC)
Goto Top
Ok mit Marios Hilfe die Lösung

<code="php">
$pattern = '/Message-ID\:\n*\s+(.*)\n/m';


Torsten