Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Juli

SELFHTML Forumsarchiv
email-adressen aus string filtern

Informationsseite
  1. Seite (PHP) email-adressen aus string filtern von josef martaler, 30. 07. 2005, 01:02
nach unten

email-adressen aus string filtern

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

nach obennach unten

email-adressen aus string filtern

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. ;-)

nach obennach unten

email-adressen aus string filtern

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

nach obennach unten

email-adressen aus string filtern

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. ;-)

nach obennach unten

email-adressen aus string filtern

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

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Juli

© 1998-2006 Seite Impressum, Software: Classic Forum