在php中使用正则表达式时奇怪的事情

时间:2012-07-20 19:26:28

标签: php regex

我正在尝试使用正则表达式检测模式,但我有一个奇怪的问题。 这就是模式 -

"/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]}

编辑 - 问题在于我的菜单格式,我在子部分中展示了“,”符号 谢谢大家!

3 个答案:

答案 0 :(得分:2)

你需要像这样转义大括号:

"/sub\{(.*)\}/i"

答案 1 :(得分:1)

正则表达式看起来很好,在您尝试数学的部分可能有换行符吗?如果是,请添加ms修饰符以获取"/sub{(.*)}/ims"

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

答案 2 :(得分:1)

除了Mike写的内容之外,请确保通过preg_quote运行字符串以转义任何正则表达式字符。