Γειά σου, 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. ;-)