0
我有模板引擎。匹配{if} ... {/ if}塊時,內容分裂由{else | elif}條件決定。但是,當內容嵌套{if} ... {/ if}塊時,{else | elif}條件算法匹配錯誤else或elif標籤。可能我有這樣的內容;preg_match不在特定標籤之間
黑線應該可選,但是紅線不可選擇。
這是我的老匹配模式,但它不能正常工作
/{(else|elif)[\s]*(.*?)[\s]*}/
我有模板引擎。匹配{if} ... {/ if}塊時,內容分裂由{else | elif}條件決定。但是,當內容嵌套{if} ... {/ if}塊時,{else | elif}條件算法匹配錯誤else或elif標籤。可能我有這樣的內容;preg_match不在特定標籤之間
黑線應該可選,但是紅線不可選擇。
這是我的老匹配模式,但它不能正常工作
/{(else|elif)[\s]*(.*?)[\s]*}/
preg_match_all("/\{\/if}(.*?)\{if \$test3 \}/ms", $input_lines, $output_array);
Echo $output_array[1];
看到它在行動http://www.phpliveregex.com/p/fhf
(您需要按preg_match_all按鈕,它的工作)
是的這個工作,但不正確。例如,當內容「abc {else} xyz」正則表達式不匹配時。所以我想我需要一個「(?!)」修飾符或類似的東西。 – redfox9999
@ redfox9999更新:-) – Andreas
對不起,但仍然無法正常工作。我需要這樣的模式。 (不在{if}){(else | elif).....}(不在{/ if}之間) 但我無法寫出適當的正則表達式 – redfox9999