我正在尝试在我的 BBcode 类中实现嵌套引号。但是还没有成功。
这是我试图实现的代码:
$string = '
[quote="test"]
[quote="abc"]Test[/quote]
test
[/quote]
Hello
';
function parseTagsRecursive($input)
{
$regex = '#\[quote="(.*?)"]((?:[^[]|\[(?!/?quote=""])|(?R))+)\[/quote]#';
if (is_array($input)) {
$input = '<div style="background:#282828; padding:0; color:white;">
<span style="display:block; background:#161616; margin-top:0; padding:5px;">' . $input[1] . ' wrote</span>
<span style="display:block; padding:5px; font-style:italic; font-size:12px;">'. $input[2] . '</span>
</div>';
}
return preg_replace_callback($regex, 'parseTagsRecursive', $input);
}
$output = parseTagsRecursive($string);
echo $output;
这就是我到目前为止得到的:
class BBCode {
public $str;
function parse() {
$this->str = preg_replace_callback(
'#\[quote="(.*?)"]((?:[^[]|\[(?!/?quote=""])|(?R))+)\[/quote]#',
array($this, 'nestedQuotes'),
$this->str);
return $this->str;
}
function nestedQuotes($input) {
if (is_array($input)) {
$input = '<div style="background:#282828; padding:0; color:white;">
<span style="display:block; background:#161616; margin-top:0; padding:5px;">' . $input[1] . ' wrote</span>
<span style="display:block; padding:5px; font-style:italic; font-size:12px;">'. $input[2] . '</span>
</div>';
}
return $input;
}
}
$string = '
[quote="test"]
[quote="abc"]Test[/quote]
test
[/quote]
Hello
';
$b = new BBCode();
$b->str = $string;
echo $b->parse();
我希望有人可以帮助解决这个问题。我已经搜索了很多,但没有找到任何解决问题的方法。