![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: josef martaler, 30. 07. 2005, 01:02
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
Die folgende Nachricht zum Thema stammt von: Arx, 30. 07. 2005, 01:11
Γειά σου, 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: http://forum.de.selfhtml.org/?t=112306&m=709593.
Sollten noch Fragen offen sein, stelle sie ruhig. ;-)
Пока!
Sven aus Bonn
--
Do it yourSELF! ;-)
Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
Athen rückt in Sichtweite. ;-)
Die folgende Nachricht zum Thema stammt von: josef martaler, 30. 07. 2005, 01:37
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
Die folgende Nachricht zum Thema stammt von: Arx, 30. 07. 2005, 02:42
Γειά σου, 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
--
Do it yourSELF! ;-)
Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
Athen rückt in Sichtweite. ;-)
Die folgende Nachricht zum Thema stammt von: josef martaler, 30. 07. 2005, 09:36
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
© 1998-2006
Impressum, Software: Classic Forum