我有以下代码:该功能的preg_match不接受符号“/”
$URI = "controller/method/parms";
$pattern = "a-z0-9_-/";
echo preg_match("/^[". $pattern ."]+$/i", $URI);
因为这个/
符号,操作将失败,出现此错误:
Warning: preg_match(): Unknown modifier ']'
。但如果我删除该符号,一切都会正常工作。
我有以下代码:该功能的preg_match不接受符号“/”
$URI = "controller/method/parms";
$pattern = "a-z0-9_-/";
echo preg_match("/^[". $pattern ."]+$/i", $URI);
因为这个/
符号,操作将失败,出现此错误:
Warning: preg_match(): Unknown modifier ']'
。但如果我删除该符号,一切都会正常工作。
逃离斜线和在字符类的末尾移动破折号:
$pattern = "a-z0-9_\/-";
preg_match("/^[". $pattern ."]+$/i", $URI);
注:因为它避开了破折号preg_quote不会在这种情况下工作,我不知道为什么。
你也可以使用其他分隔符:
$pattern = "a-z0-9_/-";
preg_match("~^[". $pattern ."]+$~i", $URI);
逃生削减'$模式= “A-Z0-9 _ \/- ”' – splash58
@ splash58:谢谢你,你是对的。问题是按照符号的顺序,它不应该把符号放在模式的末尾。 –
真的,我没有看到任何理由给我投票。 –