2012-07-20 114 views
2

我试图使用正则表达式来检测一个模式,但我有一个奇怪的问题。 这就是模式 -在php中使用正则表达式时奇怪的事情

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

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

+2

你能显示完整的代码吗? – bretterer 2012-07-20 19:28:14

+0

我添加了相关代码。 你是什么意思@Omega? – Yehonatan 2012-07-20 20:17:47

+0

“你不工作”是什么意思?正则表达式匹配两个字符串。 – 2012-07-20 20:46:02

回答

2

你需要躲避大括号这样的:

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

我想同样的事情,但后来我想知道为什么它为第一个输入工作。 – octern 2012-07-20 19:34:08

1

除了迈克写道,确保通过preg_quote运行字符串转义任何正则表达式字符。