我的一些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}}完全为空。
答案 0 :(得分:6)
在正则表达式上设置s
修饰符标记。
http://php.net/manual/en/reference.pcre.pattern.modifiers.php
像这样:/\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/s
< - 注意修饰符