我需要一些帮助。我的数据;
{foreach $page_list as $page}
<li><a href="" title="{$page->name}">{$page->name}</a></li>
{/foreach}
我的模式;
~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~
但它不起作用。有什么问题?
答案 0 :(得分:0)
您尝试排除两个{foreach ...}区域之间的线的模式明确地与“{”字符不匹配,但字符串中存在两个。由于该中间区域的匹配在某个地方没有被{/ foreach}跟随,因此整个模式无法匹配。
模式的整个部分可能应该是.*
。依靠回溯来追赶收盘{/foreach}
。当然,这会错误地将整个列表作为一个匹配,但正则表达式通常不能匹配引号(没有反向引用,这在技术上是非常规的并且会损害性能),因此您可能需要完全另外的解析策略。 p>