問候全部,需要爲模板解析器優化正則表達式
我需要優化正在使用的RegEx來解析CMS中的模板標記。標籤可以是單個標籤,也可以是匹配的一對。一些標籤的例子:
{static:input:title type="input"}
{static:image:picture}<img src="{$img.src}" width="{$img.width}" height="{$img.height"} />{/static:image:picture}
這裏是正則表達式我目前有正確的選擇我需要什麼,但我跑它通過使用RegexBuddy調試器,它需要的步驟幾萬做一個匹配,如果HTML頁面是相當大的。
{static([\w:]*)?\s?(.*?)}(?!"|')(?:((?:(?!{static\1).)*?){/static\1})?
當這個匹配一個標籤,組1是參數是所有冒號分開的單詞。組2是參數。第3組(如果它是一個標籤對)是每個標籤之間的內容。
當我將這些標籤粘貼到我的條件標籤中時,我也遇到了問題。像這樣的東西不符合正常2組(第2組應該是空白,既匹配下面標籤):
{if "{static:image:image1}"!=""}
<a href="{static:image:image1}" rel="example_group" title="Image 1"></a></li>
{/if}
需要的工作是有相同的標籤在一排,但被使用了兩次另一種情況第一個實例使用單個標籤,第二個實例用作標籤對。所以像這樣:
{static:image:picture}
{static:image:picture}<img src="{$img.src}" width="{$img.width}" height="{$img.height"} />{/static:image:picture}
需要有兩個單獨的匹配。第一場比賽將只有第一組。第二場比賽將有第1組和第3組。
如果有人需要更多的信息,請不要猶豫,問。 CMS使用CakePHP框架構建在PHP中。
對任何能夠幫助我的人都很感謝:D!
使用Smarty(http://smarty.net/) – Cfreak 2010-10-08 03:44:47
我不打算使用Smarty。我希望這與我的CMS緊密結合。我不需要Smarty擁有的所有「特徵」。 – 2010-10-08 03:48:40
使用小鬍子http://github.com/bobthecow/mustache.php你試圖通過外觀來做到這一點http://github.com/bobthecow/mustache.php/blob/master/examples/dot_notation/dot_notation .mustache – dogmatic69 2010-10-08 16:27:32