Замена строки PHP для BBCode

Я хочу создать пользовательский BBCode для своего форума, но столкнулся с проблемой, и мне трудно ее исправить.

Это то, что находится в базе данных для тела темы "[b]Bold[/b][i]Italic[/i][strike]Strike[/strike]".

Однако вывод отображается следующим образом: «[i]Курсив[/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);

person UnderMyWheel    schedule 31.12.2015    source источник
comment
Почему бы не избавить себя от проблем и не использовать тот, который был протестирован и которому доверяют? Я предлагаю использовать Parsedown.   -  person Script47    schedule 31.12.2015
comment
bbcode немного устарел, просто вставьте редактор, например cke editor: ckeditor.com   -  person    schedule 31.12.2015
comment
@Anthony Пожалуйста, попробуйте мою библиотеку для разбора шорткодов и BBCode: github.com/thunderer/Shortcode. Если вам нужна дополнительная информация, отправьте вопрос, и я помогу.   -  person Tomasz Kowalczyk    schedule 27.01.2016


Ответы (1)


правильный код должен быть:

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

return preg_replace($search, $replace, $input);
person Iłya Bursov    schedule 31.12.2015
comment
Спасибо, получилось как чудо! - person UnderMyWheel; 31.12.2015