2

我正在尝试使用正则表达式检测模式,但我遇到了一个奇怪的问题。就是这样的模式——

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

编辑 - 问题出在我的菜单格式上,我在子部分中有“,”符号时爆炸了谢谢大家!

4

3 回答 3

2

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

"/sub\{(.*)\}/i"
于 2012-07-20T19:28:37.647 回答
1

正则表达式看起来不错,您要计算的部分是否有换行符?如果是这样,添加mands修饰符得到"/sub{(.*)}/ims"

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

于 2012-07-20T19:29:37.913 回答
1

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

于 2012-07-20T19:31:15.420 回答