有问题的正则表达式:
$reg = '/[.]{1,}[\/\\]/';
if(preg_match($reg, $dir))...
我已在http://regexpal.com和http://regex.larsolavtorvik.com/上测试了这个表达式,但它运行正常,但在我的PHP脚本中,我收到了此通知。
Message: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 12
我已经弄乱了'\'的数字,但它没有改变任何东西。关于可能出现什么问题的任何建议?
我试图寻找类似的问题,但我似乎遇到的是没有添加分隔符的人。
答案 0 :(得分:4)
这是因为\\
将被PHP转义为单个\
,这会使preg_match
评估您的模式
/[.]{1,}[\/\]/
要在PHP字符串中使用2个反斜杠,您需要实际键入4:
$reg = '/[.]{1,}[\/\\\\]/';
preg_match($reg, "test");
或者使用PHP的heredoc:
$reg = <<<REGEX
/[.]{1,}[\/\\\\]/
REGEX;
preg_match($reg, "test");
编辑:似乎Heredoc也需要4个反斜杠。这是因为像\n
这样的控制字符。