gpt4 book ai didi

php - 解析 bbcode 中的多个列表?

转载 作者:可可西里 更新时间:2023-10-31 23:21:44 24 4
gpt4 key购买 nike

大家好,我有一个非常简单的 bbcode 解析系统,它目前在列表中的列表方面存在问题。

我的代码:

$find = array(
'/\[list\](.*?)\[\/list\]/is',
'/\[\*\](.*?)(\n|\r\n?)/is',
'/\[ul\](.*?)\[\/ul\]/is',
'/\[li\](.*?)\[\/li\]/is'
);

$replace = array(
'<ul>$1</ul>',
'<li>$1</li>',
'<ul>$1</ul>',
'<li>$1</li>'
);
$body = preg_replace($find, $replace, $body);

问题是当你在 li 标签中有另一个列表时,它完全无法解析,屏幕截图显示:image1

它应该是这样的:images2

我知道我的代码对它来说可能太简单了,但我该如何调整它才能解析列表项中的列表?

最佳答案

除了使用正则表达式,您还有几个选择..

  1. 使用 PHP 的 BBCode Parsing extension
  2. 做一个更简单的替换,即。直接替换 [ul]<ul>

我并不是说这不能用 Regex 来完成,只是它不是最简单的选择。

这是一个仍然基于正则表达式的替换:

$body = '[ul][li]test[/li][li]test[/li][li]test[ul][li]lol[/li][/ul][/li][li]hehe[/li][/ul]';

$find = array(
'/\[(\/?)list\]/i',
'/\[\*\](.*?)(\n|\r\n?)/i',
'/\[(\/?)ul\]/i',
'/\[(\/?)li\]/i'
);
$replace = array(
'<$1ul>',
'<li>$1</li>',
'<$1ul>',
'<$1li>'
);
$body = preg_replace($find, $replace, $body);

关于php - 解析 bbcode 中的多个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com