Mailinglisten-Archive |
moin moin,
"Cyrill Schumacher" <webmasterbhs_(at)_bluewin.de> schrieb:
>> $sonderz1 = eregi("^[a-zA-Z0-9.-_-!+?§%&]*$",$wert);
>> sollte einer dieser chars eine sonderfunktion in den
>> [] Klammern haben mußt du einen \ voranstellen
Stefan Pfister <pfister_(at)_bodensee.com> schrieb:
> Warning: REG_ERANGE in /usr/local/httpd/cgi-bin/pwchange.php3 on line 47
Du musst ja auch, wie Cyrill schrieb die Zeichen mit Sonderfunktion mit \
maskieren.
Sonderfunktion in der regular Expression haben auf jeden Fall folgende
Zeichen:
+*()?^$\-"{}.
Innerhalb der eckigen Klammern ist allerdings der Syntax nicht ganz so
streng, weil wir von Zeichenklassen reden (und somit quantifier keine
Wirkung haben).
Sonderfunktion in [] hat:
^ als erstes Zeichen in der Klammer -> Negation
- Bereich (a-z)
" als Ende des strings
Also kann eine solche regexp so aussehen:
if (eregi("^[a-z\"\-!^$%§&/()=?'*+_]+$",$string)) {
^^^^ nur die beiden muessen maskiert werden.
Uebrigens, wenn Du eregi <- [i]gnore case verwendest, brauchst Du auch
nicht beide a-zA-Z, das ist doppelt gemoppelt :-)
Ausserdem trifft Deine Expression auch auf Leerstrings zu.
(* findet 0-n Zeichen)
Daher lieber das "+" verwenden
(+ findet 1-n Zeichen)
hth,
oliver
php::bar PHP Wiki - Listenarchive