"...
$var = test-1.m...@mail.de
$pattern =
'^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$';
if(!preg_match("|$pattern|", $value[2])) {
echo "<h4>Emailadresse [$var] nicht korrekt.</h4>";
}
..."
preg_match("|$pattern|", $var) ist false. Ich erhalte folgende
Fehlermeldung.
Warning: preg_match() [function.preg-match]: Unknown modifier '(' in
Ich habe schon ein bisschen gegoogelt, etwas mit Delimiter gefunden,
aber nicht wie. Ich erhalte diese Fehlermeldung nur bei Emailadressen.
Kann mir jemand helfen?
Gruß Kai
Es heisst hier auch '$var' und nicht $value[2].
> Hallo, habe folgenden Code:
>
> "...
> $var = test-1.m...@mail.de
>
> $pattern =
> ^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$';
^^^
>
> if(!preg_match("|$pattern|", $value[2])) {
> echo "<h4>Emailadresse [$var] nicht korrekt.</h4>";
> }
> ..."
>
>
> preg_match("|$pattern|", $var) ist false. Ich erhalte folgende
> Fehlermeldung.
>
> Warning: preg_match() [function.preg-match]: Unknown modifier '(' in
Ich habe dir die Ursache unterstrichen. Du hast `|' in deiner regexp und
als Begrenzer; das passt nicht.
BTW bei obigem Ausdruck w�re ein x (PCRE_EXTENDED) als modifier durchaus
hilfreich.
KP
> $pattern =
> '^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$';
...
> Warning: preg_match() [function.preg-match]: Unknown modifier '(' in
Ahh copy and pray ging mal weider nicht?
Du nimmst das | als Delimiter, d.h. das Patteren ist nach dem n�chstem | (hier
oder) zu Ende.
nimm '/' statt '|' und es funktioniert. Also
preg_match("/$pattern/", $value[2])) {
>
> Ich habe schon ein bisschen gegoogelt, etwas mit Delimiter gefunden,
Falsche Quelle. Hier steht alles:
http://www.php.net/manual/de/reference.pcre.pattern.syntax.php
> aber nicht wie. Ich erhalte diese Fehlermeldung nur bei Emailadressen
Was willst du denn filtern? Email Addressen bestimmt nicht.
([\w\d\-\.]+)@{1}
Vor dem @ d�rfen zeichen,Zifffern Punkt und minus stehen, manche haben das
aber auch Unterstreiche.
(
([\w\d\-]{1,67})|
([\w\d\-]+\.[\w\d\-]{1,67})
)\.
Ah ein Domainname mit 1-67 Zeichen.
oder ein Domainname ohne L�ngenbegrenzung, ein Punkt dann wieder ein
Domainname mit 1-67 Zeichen und einem Punkt.
(
([a-zA-Z\d]{2,4})
(\.[a-zA-Z\d]{2})?
)
Jetzt erwartest du 2-4 alphanumerische Zeichen, dann einen Punkt und nochmals
einem Punkt mit genau 2 alphanumerische Zeichen falls vorhanden.
Und nu? Manche Studies haben sowas nerd...@fb1.fak2.uni.hinterm-wald.edu.au
Was ist mit denen?
Emails mit regex testen ist und war nie eine gute Idee, oder �berleg dir wen
du aussperren m�chtest.
Sam
--
Sufficiently advanced incompetence is indistinguishable from malice
(J. Porter Clark)
if(!preg_match("|$pattern|",
>
> $value[2])) {
> echo "<h4>Emailadresse [$var] nicht korrekt.</h4>";
> }
Alternativ gibts zum einfachen prüfen von E-Mail-Adressen auch
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
Damit sparst du dir lange und fehleranfällige reguläre Ausdrücke.