email-adressen aus string filtern
josef martaler
- php
0 Arx0 josef martaler1 Arx
guten tag !
ich möchte alle email-adressen, die in einem string vorhanden sind, herausfilter können. am liebsten hätte ich nachher alle einzelnen email-adressen in einem array.
vorweg weiss ich schon mal, dass das irgendwie mit regex und ereg funktionieren muss, doch ich blick da nicht ganz durch.
kann mir da jemand weiterhelfen ?
wäre euch sehr dankbar
gruss, josef
Γειά σου, josef!
ich möchte alle email-adressen, die in einem string vorhanden sind, herausfilter können. am liebsten hätte ich nachher alle einzelnen email-adressen in einem array.
Dann brauchst du idealerweise die Funktion preg_match_all().
vorweg weiss ich schon mal, dass das irgendwie mit regex und ereg funktionieren muss, doch ich blick da nicht ganz durch.
Dazu habe ich vor kurzem das hier geschrieben: https://forum.selfhtml.org/?t=112306&m=709593.
Sollten noch Fragen offen sein, stelle sie ruhig. ;-)
Пока!
Sven aus Bonn
vielen dank schonmal für die schnelle hilfe. jetzt habe ich aber noch ein paar probleme:
ich hab ein normales formular mit dem der string an das script geschickt wird. mein script sieht bis jetzt so aus:
---[PHP]---
<?php
if ($_POST['submit']) {
preg_match_all("(([a-z0-9_]|-|>.)+@(([a-z0-9_]|-)+.)+[a-z]{2,4})", $_POST['text'], $ausgabe, PREG_PATTERN_ORDER);
foreach($ausgabe[0] as $email_now) {
echo $email_now . "<br>";
}
}
?>
---[/PHP]---
wenn ich meinem script jetzt als test zum beispiel das
---[string]---
chantimaag8@hotmail.com, csfblackcobra@hotmail.com,
debsy_1@hotmail.com, hardstylemaster86@hotmail.com, jbaechli@msn.com,
karolette_89@hotmail.com, krocki_88@msn.com,
larissa_charmed@hotmail.com, leaminder@hotmail.com,
liv_gelpke@hotmail.com, mex_meets_schlumpf@hotmail.com,
manuelatiziani@hispeed.ch, naschu13@hotmail.com,
raegewoermli@hotmail.com, rahelma@msn.com, rockrockt@hotmail.com,
roooney_schulthi@hotmail.com, schnuggihaesli_89@hotmail.com,
sunneschii_60@hotmail.com, tobi.meier@gmx.ch
Date: Fri, 01 Jul 2005 13:48:03 +0200
---[/string]---
"füttere", kommt als ausgabe das raus:
---[ausgabe]---
chantimaag8@hotmail.com
csfblackcobra@hotmail.com
debsy_1@hotmail.com
hardstylemaster86@hotmail.com
jbaechli@msn.com
karolette_89@hotmail.com
krocki_88@msn.com
larissa_charmed@hotmail.com
leaminder@hotmail.com
liv_gelpke@hotmail.com
mex_meets_schlumpf@hotmail.com
manuelatiziani@hispeed.ch
naschu13@hotmail.com
raegewoermli@hotmail.com
rahelma@msn.com
rockrockt@hotmail.com
roooney_schulthi@hotmail.com
schnuggihaesli_89@hotmail.com
sunneschii_60@hotmail.com
meier@gmx.ch
---[/ausgabe]---
jetzt möchte ich gerne noch die ">>>" und sonstige nicht erlaubte zeichen in einer email adresse "verbannt" haben ..
aufgefallen ist mir auch noch, dass er die letzte adresse "tobi.meier@gmx.ch" nur noch als "meier@gmx.ch" ausgibt.
vielen dank schon mal im voraus, josef
Γειά σου, josef!
ich hab ein normales formular mit dem der string an das script geschickt wird. mein script sieht bis jetzt so aus:
[...]
preg_match_all("(([a-z0-9_]|-|>.)+@(([a-z0-9_]|-)+.)+[a-z]{2,4})", $_POST['text'], $ausgabe, PREG_PATTERN_ORDER);
[...]
Warum so kompliziert? Bei diesen Daten...
chantimaag8@hotmail.com, csfblackcobra@hotmail.com,
debsy_1@hotmail.com, hardstylemaster86@hotmail.com, jbaechli@msn.com,
karolette_89@hotmail.com, krocki_88@msn.com,
larissa_charmed@hotmail.com, leaminder@hotmail.com,
liv_gelpke@hotmail.com, mex_meets_schlumpf@hotmail.com,
manuelatiziani@hispeed.ch, naschu13@hotmail.com,
raegewoermli@hotmail.com, rahelma@msn.com, rockrockt@hotmail.com,
roooney_schulthi@hotmail.com, schnuggihaesli_89@hotmail.com,
sunneschii_60@hotmail.com, tobi.meier@gmx.ch
Date: Fri, 01 Jul 2005 13:48:03 +0200
und obiger RegExp kommen selbstverständlich auch Ausgeben wie...
debsy_1@hotmail.com
heraus, weil du auch auf > matchst.
IMHO reicht folgende - von mir anhand deiner Daten kurz erprobte - RegExp in deinem Fall aus:
/([a-zA-Z0-9._-]+)@([a-zA-Z0-9._-]+).([a-zA-Z0-9._-]+)/
jetzt möchte ich gerne noch die ">>>" und sonstige nicht erlaubte zeichen in einer email adresse "verbannt" haben ..
Wenn du die > nicht im Ergebnis haben möchtest, dürfen sie in deiner RegExp nicht in einer der Klammern stehen, da du dein Ergebnis aus den Teilzeichenketten zusammenstellst, auf die die geklammerten Ausdrücke deiner RegExp matchen.
aufgefallen ist mir auch noch, dass er die letzte adresse "tobi.meier@gmx.ch" nur noch als "meier@gmx.ch" ausgibt.
Du matchst in deiner RegExp vor dem @-Zeichen auf den . (Punkt). Der Punkt steht jedoch für ein beliebiges Zeichen (außer dem Newline \n). Um auf einen "richtigen" Punkt zu matchen musst du ihn mit dem Backslash maskieren. So: .
Пока & Gute Nacht! ;-)
Sven aus Bonn
ich glaubs ja nicht, es funktioniert alles einwandfrei !
vielen dank nochmals für deine ausführliche hilfe ;-)
hier noch der code für interessierte & suchende:
<?php
if ($_POST['submit']) {
preg_match_all("/([a-zA-Z0-9\._-]+)@([a-zA-Z0-9\._-]+)\.([a-zA-Z0-9\._-]+)/", $_POST['text'], $ausgabe, PREG_PATTERN_ORDER);
foreach($ausgabe[0] as $email_now) {
echo $email_now . "<br>";
}
}
?>
grüsse, josef