我正在尝试使用正则表达式检测模式,但我有一个奇怪的问题。 这就是模式 -
"/sub\{(.*)\}/i"
我正在使用它:
if(preg_match("/sub\{(.*)\}/i",$item))
{
$sub = explode("|",$item);
$sub_name = explode("{",$sub[0]);
$sub_name = $sub_name[1];
...
}
这是字符串 -
sub{selected posts|post[1]}
嗯,上面的字符串很好,但是当我添加另一个这样的项目时 -
sub{selected posts|post[1],post[2]}
编辑 - 问题在于我的菜单格式,我在子部分中展示了“,”符号 谢谢大家!
答案 0 :(得分:2)
你需要像这样转义大括号:
"/sub\{(.*)\}/i"
答案 1 :(得分:1)
正则表达式看起来很好,在您尝试数学的部分可能有换行符吗?如果是,请添加m
和s
修饰符以获取"/sub{(.*)}/ims"
http://php.net/manual/en/reference.pcre.pattern.modifiers.php
答案 2 :(得分:1)
除了Mike写的内容之外,请确保通过preg_quote运行字符串以转义任何正则表达式字符。