preg_match vs FILTER_VALIDATE_URL

Hallo, ich habe eine Frage und zwar wollte ich jetzt die korrekheit einer Email und URL prüfen. Dazu habe ich zwei Möglichkeiten gefunden. Erste Möglichkeit wäre, die Korrekheit mit preg_match und dem dazugehörigen Regulären Ausdruck zu prüfen:

[PHP]
if(preg_match(„/([0-9a-zA-Z])@(\w+).(\w+)/“, $email)) {
echo $email . " is valid";
} else {
echo $email . " is not valid";
}
[/PHP]

oder halt mit FILTER_VALIDATE_EMAIL bzw. FILTER_VALIDATE_URL:
[PHP]if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo $email . " is valid";
} else {
echo $email . " is not valid";
}[/PHP]

Meine Frage ist nun, ob man eine der beiden Möglichkeiten der anderen bevorzugen könnte bzw. welche sinnvoller (besser?) ist?

Moin,

die letze denke ich, weil es eben keine Kinderspiel ist, Domains und Emails auf richtigkeit zu prüfen.

Vor dem @ dürfen z.B. noch . und _ verwendet werden.
Was ist mit Umlaut-Domains? (die du übrigends in beiden Versionen erst zu punycode umwandeln musst)

jau.macht_nix@xn–tst-qla.de wäre z.B. valid. Wird in deinem Regex aber nicht berücksichtigt.

MfG

Okay, danke dir für deine Antwort. Das mit den Umlaut-Domains hatte ich nicht beachtet.

jau.macht_nix@xn–tst-qla.de wäre z.B. valid. Wird in deinem Regex aber nicht berücksichtigt.

Könnte ich denn umlaute in meinem Regex berücksichtigen?

Guck mal: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
Bleib besser bei filter_var

Okay xD Danke.