PHP BBCode 的字符串替换

PHP String Replace for BBCode

我想为我的论坛网站制作自定义 BBCode,但我 运行 遇到了一个问题,我很难修复它。

这是线程正文“[b]Bold[/b][i]Italic[/i][strike]Strike[/strike]”的数据库中的内容。

然而输出是这样显示的“[i]Italic[/i][strike]Strike[/strike]”。

所以,我猜这是回显问题,但我不确定如何解决它。这是当前代码:

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

    $search = array('/\[b\](.*?)\[\/b\]/is');

    $replace = array('<b>$body</b>');

    return preg_replace($search, $preg_replace, $input);
}

while($row = mysql_fetch_array($threadquery, MYSQL_ASSOC)) {
    $body = str_replace("\n",'<br>', $row['body']);
}

echo bbcode($body);

正确的代码应该是:

$replace = array('<b></b>');

return preg_replace($search, $replace, $input);