Tobias Kloth: Reguläre Ausdrücke mit preg ...

Beitrag lesen

Hallo Andy,

if (preg_match("/[(user)(menu)(cart)]/",$PHP_SELF)) { ... }

damit trifft der Ausdruck zu, wenn eines der Zeichen »acemnrstu()« in $PHP_SELF vorkommt (btw: warum nicht $_SERVER['PHP_SELF']?).

ob sich der User auf einer Seite "user", "menu", "cart" befindet, oder nicht.

dann brauchst du als Ausdruck eher sowas wie (ungetestet):
  /(user|menu|cart)/

  • das Findet dir »user« oder »menu« oder »cart«.

habe ich 3 Teilausdrücke,
die von eckigen ODER Klammern umrahmt sind.

die ecken Klammern bewirken kein »oder« sondern definieren eine Zeichenklasse.

P.s.: Kann ich das auch mit strpos() oder irgendwas schnellerem
als preg_match() realisieren?

ja, etwa so: (ungetestet)
  if(strpos($_SERVER['PHP_SELF'],'user') !== false){
    echo 'user';
  }
(das was in if() steht natürlich mehrmals mit »or« getrennt) ich weiß aber nicht, ab wievielen strpos() sich eine regulärer Ausdruck rentiert.

Grüße aus Nürnberg
Tobias