2016-04-08 40 views
0

我有模板引擎。匹配{if} ... {/ if}塊時,內容分裂由{else | elif}條件決定。但是,當內容嵌套{if} ... {/ if}塊時,{else | elif}條件算法匹配錯誤else或elif標籤。可能我有這樣的內容;preg_match不在特定標籤之間

example content

黑線應該可選,但是紅線不可選擇。

這是我的老匹配模式,但它不能正常工作

/{(else|elif)[\s]*(.*?)[\s]*}/ 

回答

0
preg_match_all("/\{\/if}(.*?)\{if \$test3 \}/ms", $input_lines, $output_array); 
Echo $output_array[1]; 

看到它在行動http://www.phpliveregex.com/p/fhf

(您需要按preg_match_all按鈕,它的工作)

+0

是的這個工作,但不正確。例如,當內容「abc {else} xyz」正則表達式不匹配時。所以我想我需要一個「(?!)」修飾符或類似的東西。 – redfox9999

+0

@ redfox9999更新:-) – Andreas

+0

對不起,但仍然無法正常工作。我需要這樣的模式。 (不在{if}){(else | elif).....}(不在{/ if}之間) 但我無法寫出適當的正則表達式 – redfox9999