0
我嘗試從HTML文件中讀取foreach循環。例如:php正則表達式查找嵌套模式
{foreach $foo as $bar}
{$bar->getName()}
{endforeach}
// but also nested loops
{foreach $foo as $bar}
{foreach $bar as $b}
{$b->getName()}
{endforeach}
{endforeach}
// with regex
preg_match_all('/{foreach(.*?)}(.){endforeach}/us',$html, $matches, PREG_SET_ORDER
將盡我所能在這個偉大的regex101.com網站在這裏... see example
至少我在這個例子中獲得了兩場比賽。
雖然我也想要嵌套部分。
但是,當我在我的PHP應用程序中使用這個正則表達式時,它返回一個空數組。
只要在第二組中使用點(.)
,就不會像regex101.com那樣返回任何東西
難道這是一個php7的問題嗎?請幫助
聽起來你正在尋找一個[遞歸正則表達式(http://www.rexegg.com/regex- recursion.html)。這樣的模式怎麼樣(沒有標誌)[/ {(foreach)[^}] *}(?> [^ {] + | {(?!(?: end)?\ 1)|(?R) )* {end \ 1} /'](https://www.regex101.com/r/EWgJUy/1) –
但這並不給我內循環。 – FitzPatrick
無論如何......但我意識到這是錯誤的方法。我不需要它們的嵌套順序。現在我用'/ {((\ w +)(。*?))}'得到所有內容,然後執行所有str替換以獲得有效的php字符串。 – FitzPatrick