phpbar.de logo

Mailinglisten-Archive

[php] =?ISO-8859-1?Q?eregi=2D=E4rger?= :-(

[php] =?ISO-8859-1?Q?eregi=2D=E4rger?= :-(

Oliver Trosien oli_(at)_tronet.on-luebeck.de
Fri, 21 Jan 2000 16:16:03 +0100


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