13pixelchen hat geschrieben:Habs nochmal abgewandelt zu /From: ((.+)@([-\w]+)\.([a-z>]){2,5})/i
Bei Aufnahme von > in einer Zeichenklasse spielt die Reihenfolge der in der Zeichenklasse enthaltenen Zeichen keine Rolle mehr und der Teilausdruck würde auch mit .a>bcd übereinstimmen. Der Teilausdruck \.([a-z]){2,4}> passt hingegen nur auf .ab> bis .abcd>.
Damit der Ausdruck auch auf .co.uk passt, nimmst Du den Punkt noch einen Teilausdruck weiter vorn auf bei ([-.\w]+).
Die Datei abc.html enthält:
Code: Alles auswählen
Erste Zeile ...
From: "abcöäü" <mail@mail-_mail.de>
Dritte Zeile ...
From: "abcöäü" <mail@mail-_mail.co.uk>
Fünfte Zeile ...
Ausgabe getestet mit:
Code: Alles auswählen
<?php
$datei = fopen("abc.html", "r");
$muster = "/From:(.+)<(.+)@([-.\w]+)\.([a-z]){2,4}>/i";
while (!feof($datei)) {
$suche_in= fgets($datei, 1000);
if (stripos($suche_in, "from:")!== false) {
preg_match($muster, $suche_in, $ausgabe);
echo htmlspecialchars($ausgabe[0])."<br>\n";
}
}
fclose ($datei);
/*
Ausgabe:
From: "abcöäü" <mail@mail-_mail.de>
From: "abcöäü" <mail@mail-_mail.co.uk>
*/
?>
Und was hast Du damit vor? Ich hoffe, ich helfe Dir hier nicht bei Schandtaten, die in einer Grauzone liegen.