phpbar.de logo

Mailinglisten-Archive

[php] Regular Expressions

[php] Regular Expressions

Hartmut Holzgraefe hartmut_(at)_six.de
Fri, 23 Jun 2000 19:24:34 +0200


Daniel Schuster wrote:
> beim folgenden Code kommt immer der Fehler:
> 
>     Warning: REG_BADRPT in lineXXXX
> ...
>if(! eregi("*saxen\.net*",$HTTP_REFERER)){   //Hier kommt immer der obige fehler!!
> ...
> was hat der fehler zu bedeuten?
 
die ereg Funktionen erwarten eine 'richtige' regular expression, 
nicht eie vom Dateinamentyp, und da hat der Stern alleine keine
Bedeutung, sondern bezieht sich immer auf eine beliebige Anzahl
von Symbolen, die durch den vorhergehenden Ausdruck beschrieben wurden

das hintere Ende bedeutet damit "0, 1 oder mehrere t's am Ende"
und das vordere Ende "0, 1 oder mehrere, ja was eigentlich???"
deshalb der Fehler

was du eigentlich schreiben wolltest war ".*saxen\.net.*"
das funktioniert, liefert aber auch Treffer für niedersaxen.net
oder www.irgendwo.de/verzeichnis/unterverzeichnis/saxen.net

deshalb brauchst du eigentlich eher "^http://([^/\.]*\.)*saxen.net/.*"
und das O'Reilly Buch über reguläre Ausdrücke in allen Lebenslagen
(der Ausdruck ist nicht perfekt, da er zu viele mögliche Zeichen im
Hostnamen zuläßt, aber im HTTP_REFERER sollten ja eh nur gültige 
Namen auftauchen, und so erfüllt er genau seinen Zweck)

--
Hartmut Holzgraefe         hartmut_(at)_six.de           http://www.six.de


php::bar PHP Wiki   -   Listenarchive