我在PHP中構建了一個僞變量解析器,允許在視圖中使用乾淨和簡單的語法,並實現了if語句的引擎。現在我希望能夠使用嵌套的if語句,我想到的最簡單,最優雅的解決方案是使用identation作爲塊的標記。在preg_match_all中使用正則表達式
所以這是basicly我正在尋找在視圖中的佈局:
{if x is empty}
{if y is array}
Hello World
{endif}
{endif}
該腳本會發現第一個if語句,並在同一深度ENDIF匹配。如果評估結果爲true,則內部塊也將被解析。
現在,我無法設置正則表達式在下面的代碼中使用深度:
preg_match_all('|([\t ]?){if (.+?) is (.+?)}(.+?){endif}|s', $template, $match);
基本上我想在([\t ]?)
第一場比賽到{endif}
之前使用某種類型的變量被放置,並確保在與{if ...}
深度相同的深度上沒有匹配的{endif}
時,該聲明不會完整。
你能幫我完成嗎?
你不想使用其中的一個原因? http://www.webresourcesdepot.com/19-promising-php-template-engines/ – 2009-11-17 11:39:02
我正在擴展CodeIgniter內置的模板工具,並且if語句是我需要的唯一精簡版。 – Christoffer 2009-11-17 13:00:12