[PHP] eregi durch preg_match ersetzen

tobias1985

Der Erlöser
ID: 37913
L
24 April 2006
4.963
607
Hi,
ich steh zurzeit wohl auf dem Schlauch. Ich nutze in einem Script zurzeit noch folgendes:

PHP:
if(eregi("Opera[ |/]{0,1}([1-9])", $user_agent, $regs)) return 'Opera '.$regs[1];

Da preg_match() schneller wäre, dachte ich, ich ersetze die Funktion mal durch:

PHP:
if(preg_match("Opera[ |/]{0,1}([1-9])", $user_agent, $regs)) return 'Opera '.$regs[1];

Laut php.net nutzt preg_match auch normale reguläre Ausdrücke. Also sollte doch das einfache ersetzen der Funktion schon ausreichen?
Ich bekomm dann aber folgende Fehlermeldung:

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /pfad/datei.php on line 92

Ich habs leider nicht hinbekommen und keine Lösung gefunden. Entweder hab ich irgendwas nicht verstanden oder ich steh gerade voll auf dem Schlauch. :-? Hoffe ihr könnt mir helfen. :)

Danke schonmal.

Gruß
Tobias
 
Moin,

spontan würde ich sagen, es fehlen die "Begrenzungszeichen" für den Regulärenausdruck.

versuchs mal z.B. so:
PHP:
if(preg_match("~Opera[ |/]{0,1}([1-9])~", $user_agent, $regs)) return 'Opera '.$regs[1];

Vor und hinter deinem regulären Ausdruck noch ein Begrenzungszeichen (das kannst du "fast" frei wählen).
 
Die Mitte stimmt wahrscheinlich auch ned. In der Charaktergruppe gelten alle Zeichen, also auch der vertikale Strich. Ich nehm ned an, dass du den erlauben willst.
Statt {0,1} kannst du auch einfach ? schrieben.

Ich würde dann auf
Code:
[FONT=Courier New]~Opera[ /]?([1-9])~[/FONT]
kommen.