Folgender Ausdruck verursacht mir seit heute einen Fehler:
[PHP]
if(!preg_match( ‚/^([a-zA-Z0-9_-!#])+([.a-zA-Z0-9_-!#])*@([a-zA-Z0-9_-!#])+(.[a-zA-Z0-9_-!#]+)+/‘ , $Wert)) $fehler = $lng[‚not_ok‘];
[/PHP]Ergebnis:
preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 14
komischer Weise kommt der Fehler erst seit Kurzem.
Ich würde nur gerne darauf hinweisen, dass dieser rägulare Ausdruck nicht korrekt ist (selbst mit umgekehrtem Schrägstrich vor dem Bindestrich).
PHP hat seit Version 5.2.0 eine Funktion, die das richtig macht: filter_var(‚email@adresse.tld‘, FILTER_VALIDATE_EMAIL);
Und falls du PHP 5.1.0 als Problem ansehen solltest um diese Funktion zu benutzen:
„/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))\x22)))@(?:(?:(?!.[^.]{64,})(?:(?:(?:xn–)?[a-z0-9]+(?:-[a-z0-9]+)\.){1,126}){1,}(?:(?:[a-z][a-z0-9])|(?:(?:xn–)[a-z0-9]+))(?:-[a-z0-9]+))|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD“; http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?view=co&revision=306938&content-type=text/plain
Wobei zu bedenken sei, dass eine E-Mailadresse maximal eine 320 Bytelänge haben darf.
@Asterixus
Ich weiss, aber der Kunde hat es so bestellt, es dürfen nur bestimmte Zeichen bei der Eingabe verwendet werden. Ich habe eine Liste mit erlaubten Zeichen bekommen.