PHP:简单的正则表达式问题

时间:2011-09-12 08:43:17

标签: php regex preg-match-all

我的一些HTML文件包含如下字符串:

{foreach $any_kind_of_charaters}
Any kind of string including "\n\r" and spaces here
{/foreach}

我想对他们应用PHP's preg_match_all,并希望返回一个好的array,如下面打印

Array
(
    [0] => {foreach $any_kind_of_charaters}
            Any kind of string including "\n\r" and spaces here
           {/foreach}
    [1] => any_kind_of_charaters
    [2] => Any kind of string including "\n\r" and spaces here
)

此REGEX:/\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/对我来说没问题,
但是当我在{foreach}{/foreach}标签之间添加新行(\ n)时,它会失败。

非常感谢你的帮助,谢谢。

使用“S”MODIFIER后的阵列

Array
(
    [0] => {foreach $any_kind_of_charaters}
        Any kind of string including "\n\r" and spaces here
        {/foreach}
    [1] => any_kind_of_charaters}
        Any kind of string including "\n\r" and spaces here
    [2] => 
)

second key的{​​{1}}包含不必要的数据,array的{​​{1}}完全为空。

1 个答案:

答案 0 :(得分:6)

在正则表达式上设置s修饰符标记。

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


像这样:/\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/s< - 注意修饰符