I have the following code:
$URI = "controller/method/parms";
$pattern = "a-z0-9_-/";
echo preg_match("/^[". $pattern ."]+$/i", $URI);
Because of this /
symbol, the operation fails and appears this error:Warning: preg_match(): Unknown modifier ']'
. but if I remove that symbol, everything will work correctly.
Escape the slash and move the dash at the end of the character class:
$pattern = "a-z0-9_\/-";
preg_match("/^[". $pattern ."]+$/i", $URI);
Note: preg_quote doesn't work in this case because it escapes the dash, I don't know why.
You could also use another delimiter:
$pattern = "a-z0-9_/-";
preg_match("~^[". $pattern ."]+$~i", $URI);