我目前有以下正则表达式:
\[quote="([^"]+)"\]([^[]+)\[\/quote\]
哪个匹配字符串中的[quote="author"]text[/quote]
并捕获author
和text
以将其转换为格式化的div引号:
$p_text = preg_replace('/\[quote="([^"]+)"\]([^[]+)\[\/quote\]/', '<div class="quote"><strong class="quote-author">$1 wrote:</strong><br>$2</div>', $p_text);
但是我希望能够嵌套一次,如下所示:
[quote="b"]
[quote="a"]
Original text
[/quote]
Reply to quote a
[/quote]
Reply to quote b
以下是我希望它的外观:
以下是上述代码的目前情况:
如何嵌套引号?
答案 0 :(得分:1)
您可以使用循环从内到外使用当前正则表达式解决它。
$pattern = '/\[quote="([^"]+)"\]([^[]+)\[\/quote\]/';
$replace = '<div class="quote"><strong class="quote-author">' .
'$1 wrote:</strong><br>$2</div>';
do {
$p_text = preg_replace($pattern, $replace, $p_text, -1, $replace_count);
} while($replace_count > 0);
See demo at eval.in。如果您因任何原因需要recursive regex see this demo at regex101。