我需要一些幫助。我的數據;我的正則表達式模式失敗
{foreach $page_list as $page}
<li><a href="" title="{$page->name}">{$page->name}</a></li>
{/foreach}
而我的模式;
~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~
但它不工作。哪裏不對 ?
我需要一些幫助。我的數據;我的正則表達式模式失敗
{foreach $page_list as $page}
<li><a href="" title="{$page->name}">{$page->name}</a></li>
{/foreach}
而我的模式;
~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~
但它不工作。哪裏不對 ?
您試圖排除兩個{foreach ...}區域之間的界限的模式顯式不匹配'{'個字符,但是兩個存在於字符串中。由於中間區域的匹配在{/ foreach}沒有跟隨的地方被破壞,整個模式無法匹配。
該模式的整個部分可能應該是.*
。依靠回溯捕捉關閉{/foreach}
。當然,這會錯誤地將整個列表匹配爲一件事,但通常的正則表達式通常不能匹配引號(沒有反向引用,這在技術上非常規且性能受損),因此您可能需要完全使用另一種解析策略。
似乎也會需要'(PCRE_DOTALL)' – kirilloid 2012-03-18 21:39:33
@kirilloid是的謝謝 – 2012-03-18 23:33:22
你想要發生什麼? 「不工作」是什麼意思?請具體問題。 – 2012-03-18 21:30:07