PHP正则表达式匹配这个:

时间:2012-11-06 21:38:07

标签: php regex

[foreach:regex]
    [r_hello]
[/foreach]

尝试匹配以上内容:regex:]之间的字)将为$1以及[foreach:regex][/foreach]之间的任何内容将是$2

到目前为止,我有这个:/\[foreach:(.*)\](.*)\[\/foreach\]/s

但是我收到了这个错误:Notice: Undefined index: regex] [r_hello

1 个答案:

答案 0 :(得分:1)

尝试:

/\[foreach:([^\]]*)\]\s*\[([^\]]*)\]\s*\[\/foreach\]/s

http://phpfiddle.org/main/code/7av-ypa

问题是:

  1. 你贪婪地匹配任何一个或多个角色,这里可以避免
  2. 您没有考虑空白(换行符和标签页)
  3. 你没有考虑到中央项目的方括号。