【发布时间】:2022-01-21 15:42:14
【问题描述】:
这是一种BB码。知道如何匹配所有元素,如 [LI]text[/LI] 和 [UL]text[/UL]?
preg_match_all("/(\[UL].*\[\/UL])|(\[LI].*\[\/LI])/", '[UL][LI]sadas[/LI][/UL]', $match);
想要收到类似的东西:
0 => "[UL][LI]sadas[/LI][/UL]"
1 => "[UL][LI]sadas[/LI][/UL]"
2 => "[LI]sadas[/LI]" <--- This is not captured now.
基本上是关于:如何获得这个 [LI]text[/LI] 部分而不是松散 [UL]text[/UL] 部分?
【问题讨论】:
-
条件的第一部分(
[UL])匹配,没有理由也匹配第二部分(嵌套[LI]) -
它不会返回重叠的匹配项。
-
preg_match_all("~(\[UL](.*?)\[/UL]~s", '[UL][LI]sadas[/LI][/UL]', $match);
标签: php preg-match-all