Php 嵌套bb代码引用如何>;

Php 嵌套bb代码引用如何>;,php,bbcode,quote,Php,Bbcode,Quote,嗨,我使用一个非常基本的bbcode解析器 你们能帮我解决一个问题吗 但举例来说,如果写下: [quote=tanab][quote=1][code]a img{ text-decoration: none; }[/code][/quote][/quote] 输出如下: tanab said: [quote=1] a img{ text-decoration: none; } [/quote] 我该怎么去修理它呢?我真的不擅长所有的准备工作 这是我的解析器: function bb

嗨,我使用一个非常基本的bbcode解析器

你们能帮我解决一个问题吗

但举例来说,如果写下:

[quote=tanab][quote=1][code]a img{
text-decoration: none;
}[/code][/quote][/quote]
输出如下:

tanab said:
[quote=1]
a img{
    text-decoration: none;
}
[/quote] 
我该怎么去修理它呢?我真的不擅长所有的准备工作

这是我的解析器:

function bbcode($input){
$input = htmlentities($input);

$search = array(
            '/\[b\](.*?)\[\/b\]/is',
            '/\[i\](.*?)\[\/i\]/is',
            '/\[img\](.*?)\[\/img\]/is',
            '/\[url=(.*?)\](.*?)\[\/url\]/is',
            '/\[code\](.*?)\[\/code\]/is',
            '/\[\*\](.*?)/is',
            '/\\t(.*?)/is',
            '/\[quote=(.*?)\](.*?)\[\/quote\]/is',
);

$replace = array(
            '<b>$1</b>',
            '<i>$1</i>',
            '<img src="$1">',
            '<a href="$1">$2</a>',
            '<div class="code">$1</div>',
            '<ul><li>$1</li></ul>',
            '&nbsp;&nbsp;&nbsp;&nbsp;',
            '<div class="quote"><div class="quote-writer">$1 said:</div><div class="quote-body">$2</div></div>',

);

return preg_replace($search,$replace,$input);
函数bbcode($input){
$input=htmlentities($input);
$search=array(
“/\[b\](.*?\[\/b\]/is”,
“/\[i\](.*?\[\/i\]/is”,
“/\[img\](.*?\[\/img\]/is”,
“/\[url=(.*?\])(.*?\[\/url\]/is”,
“/\[code\](.*?\[\/code\]/is”,
“/\[\*\](.*?)/is”,
“/\\t(.*?)/is”,
“/\[quote=(.*?\])(.*?\[\/quote\]/is',
);
$replace=数组(
'$1',
'$1',
'',
'',
'$1',
“
  • <1美元”, ' ', “$1表示:$2”, ); 返回preg_replace($search,$replace,$input);
}这可以通过递归正则表达式进行调整:

 '/\[quote=(.*?)\](((?R)|.*?)+)\[\/quote\]/is'
这将至少确保输出div不会被错误嵌套。但是您仍然需要运行两到三次正则表达式才能捕获所有报价块


否则它将需要使用重写代码。我不想费心去展示,因为这已经出现了几十次(试试网站搜索!),以前已经解决了,等等。

看在上帝的份上,我可以建议你吗?你想解决什么问题?有什么问题吗?可能是重复的