2012-03-18 59 views
-1

我需要一些幫助。我的數據;我的正則表達式模式失敗

{foreach $page_list as $page} 
    <li><a href="" title="{$page->name}">{$page->name}</a></li> 
{/foreach} 

而我的模式;

~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~ 

但它不工作。哪裏不對 ?

+0

你想要發生什麼? 「不工作」是什麼意思?請具體問題。 – 2012-03-18 21:30:07

回答

0

您試圖排除兩個{foreach ...}區域之間的界限的模式顯式不匹配'{'個字符,但是兩個存在於字符串中。由於中間區域的匹配在{/ foreach}沒有跟隨的地方被破壞,整個模式無法匹配。

該模式的整個部分可能應該是.*。依靠回溯捕捉關閉{/foreach}。當然,這會錯誤地將整個列表匹配爲一件事,但通常的正則表達式通常不能匹配引號(沒有反向引用,這在技術上非常規且性能受損),因此您可能需要完全使用另一種解析策略。

+0

似乎也會需要'(PCRE_DOTALL)' – kirilloid 2012-03-18 21:39:33

+0

@kirilloid是的謝謝 – 2012-03-18 23:33:22