Wie Email extrahieren

Hallo liebe NGler,

ich möchte aus einer Textdatei alle Email-Adressen auslesen.
Mein Script liest dazu die Textdatei ein und stellt alles zeilenweise
dar.
Wie kann ich erreichen, daß nur alle Email-Adressen erscheinen,
der Rest jedoch wegfällt?

$muster_email = "[[:alpha:]]+ [at] [^<>[:space:]]+[[:alnum:]/]";
if (ereg($muster_email,$zeile)) ... echo ...

Damit stellt er mir bereits die Zeilen mit Email-Adressen dar, nun
müsste nur der Rest davor und dahinter weg. Wer hat eine Idee?

Mit freundlichem Gruß
Rafael Nehring
Rafael Nehring [ Do, 03 Januar 2008 17:10 ] [ ID #1899041 ]

Re: Wie Email extrahieren

Rafael Nehring schrieb:
> Hallo liebe NGler,
>
> ich möchte aus einer Textdatei alle Email-Adressen auslesen.
> Mein Script liest dazu die Textdatei ein und stellt alles zeilenweise
> dar.
> Wie kann ich erreichen, daß nur alle Email-Adressen erscheinen,
> der Rest jedoch wegfällt?
>
> $muster_email = "[[:alpha:]]+ [at] [^<>[:space:]]+[[:alnum:]/]";
> if (ereg($muster_email,$zeile)) ... echo ...
>
> Damit stellt er mir bereits die Zeilen mit Email-Adressen dar, nun
> müsste nur der Rest davor und dahinter weg. Wer hat eine Idee?

Mal so ganz simpel:

preg_match_all(
'/[a-z0-9]{2,} [at] [a-z0-9]{2,}.[a-z]{2,4}/i',
file_get_contents('mails.txt'),
$result
);

var_dump($result[0]);

So solltest du die Mails eigentlich bekommen.

Achso, bevor die ersten wieder rumnörgeln, der reguläre Ausdruck für die
Mails ist jetzt nur sporadisch und sollte natürlich etwas genauer arbeiten.

> Mit freundlichem Gruß
> Rafael Nehring
>
>

MfG Benny
benjamin radtke [ Do, 03 Januar 2008 17:21 ] [ ID #1899042 ]

Re: Wie Email extrahieren

> if (ereg($muster_email,$zeile)) ... echo ...

Wieso schreibt da eigentlich nciht mal jemand ne Warnung in die Doku,
dass ereg mit PHP6 rausfliegt?
Jonas Werres [ Do, 03 Januar 2008 17:36 ] [ ID #1899043 ]

Re: Wie Email extrahieren

Rafael Nehring schrieb:

> ich möchte aus einer Textdatei alle Email-Adressen auslesen.
> Mein Script liest dazu die Textdatei ein und stellt alles zeilenweise
> dar.
> Wie kann ich erreichen, daß nur alle Email-Adressen erscheinen,
> der Rest jedoch wegfällt?
>
> $muster_email =3D "[[:alpha:]]+ [at] [^<>[:space:]]+[[:alnum:]/]";

Viele gültige E-Mail-Adressen wie ? [at] ! (gültig lt. RfC822) erreichst d=
u
damit nicht. Hier findest du eine Auswahl an Mustern:
http://regexlib.com/Search.aspx?k=3Demail

> if (ereg($muster_email,$zeile)) ... echo ...

8.2. Soll ich ereg() oder preg() verwenden?
http://www.php-faq.de/q/q-regexp-ereg.html

> Damit stellt er mir bereits die Zeilen mit Email-Adressen dar, nun
> müsste nur der Rest davor und dahinter weg. Wer hat eine Idee?

$matches =3D array();
preg_match_all( '~('.$pattern.')~sim', $text, $matches, PREG_SET_ORDER);
print_r( $matches );

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Do, 03 Januar 2008 17:52 ] [ ID #1899046 ]

Re: Wie Email extrahieren

Jonas Werres schrieb:

>> if (ereg($muster_email,$zeile)) ... echo ...
>
> Wieso schreibt da eigentlich nciht mal jemand ne Warnung in die Doku,
> dass ereg mit PHP6 rausfliegt?

Vermutlich, weil PHP6 noch nicht so festgezurrt ist, dass eine Anpassung
der Dokumentation gerechtfertigt ist.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Do, 03 Januar 2008 18:18 ] [ ID #1899048 ]

Re: Wie Email extrahieren

Hallo Benjamin, Du und die anderen netten Helfer hatten geschrieben:

> preg_match_all(
> '/[a-z0-9]{2,} [at] [a-z0-9]{2,}.[a-z]{2,4}/i',
> file_get_contents('mails.txt'),
> $result
> );
>
> var_dump($result[0]);

Vielen Dank, auch an die anderen Helfer.

MFG Rafael Nehring
Rafael Nehring [ Do, 03 Januar 2008 19:25 ] [ ID #1899050 ]

Re: Wie Email extrahieren

benjamin radtke schrieb:
> Rafael Nehring schrieb:

> preg_match_all(
> '/[a-z0-9]{2,} [at] [a-z0-9]{2,}.[a-z]{2,4}/i',

Bist Du sicher, dass das gierig genug ist?
Bekommst Du auch ".co.uk" und nicht nur ".co" als Beispiel.

Cheerio

Julian

--
Julian Bessenroth ( http://www.vnox.de )
Email : jbusenet (Ligatur von "a" und "d") gmx.de
Reply-Emails : mit "[NG]" oder "[NOSPAM]" im Betreff,
sonst gehen sie unter.
jbusenet [ Sa, 05 Januar 2008 12:01 ] [ ID #1900434 ]
PHP » de.comp.lang.php.misc » Wie Email extrahieren

Vorheriges Thema: Post Array wieder in einem Formular übergeben
Nächstes Thema: Zeilen einer Datei durch den Inhalt von Text-Dateien ersetzen