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-ID: 182753

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

Ausgedruckt am: 16.11.2024 um 18:11 Uhr

mak-xxl
mak-xxl 28.03.2012 um 18:43:19 Uhr
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
TorstenE
TorstenE 28.03.2012 um 18:48:33 Uhr
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
Midivirus
Midivirus 28.03.2012 um 21:05:03 Uhr
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
TorstenE
TorstenE 29.03.2012 um 13:35:49 Uhr
Goto Top
Ok mit Marios Hilfe die Lösung

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


Torsten