2012-05-22 140 views
0

我期待提高以下的正則表達式,因爲我現在想匹配嵌套的標籤,以及:遞歸標籤內容

'%{if:\s*"\'([^\']*)\' == \'([^\']*)\'"}((?:(?!{else}|{/endif}).)*){else}((?:(?!{/endif}).)*){/endif}%sei'

這基本上一致:

{if: "'x' == 'y'"} 
    a 
{else} 
    b 
{/endif} 

{if: "'x' == 'y'"} 
    c 
{/endif} 

不過,我想這是在某種方式遞歸,所以嵌套狀態也可以在不破壞任何內容的情況下進行匹配(如果添加了嵌套語句,此時它會中斷)。

有也將是一個類似的表達與!=

我發現這個http://www.devnetwork.net/viewtopic.php?f=38&t=102670&sid=02b7c691a2be894336c694700f8f911a#p551340它匹配<div>標籤,雖然有點不知道該如何去適應它適合我的正則表達式...

+0

更多的上下文請。這樣做的目的是什麼? – Gordon

+0

對不起,我的一些邏輯允許一些最終用戶創建一個模板,以顯示一個可以自定義的區域。我不希望允許PHP,使所有被剝離出來的安全性是

0

如果限制嵌套一些預定的深度(這可能會或可能不會一個壞主意),你可以將它與正則表達式匹配。否則,你不能。您提供的鏈接與正則表達式的HTML匹配,這是經常使用的,但通常是known是一個壞主意。如果您不想使用其他形式的解析,請考慮匹配最內層的ifs,替換爲某些內容並再次匹配。