2015-12-31 3 views
-3

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

Это то, что находится в базе данных для тела потока. [B] Полужирный [/ b] [i] Курсив [/ 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); 
+0

Почему бы не спасти себя неприятности и использовать тот, который был проверен и доверенный? Я бы предложил использовать [Parsedown] (http://parsedown.org/). – Script47

+0

bbcode немного устарел, просто вставляйте редактор, например, редактор cke: http://ckeditor.com/ –

+0

@Anthony Попробуйте мою библиотеку для разбора коротких кодов и BBCodes: github.com/thunderer/Shortcode. Если вам нужна дополнительная информация, отправьте вопрос, и я помогу. –

ответ

0

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

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

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

Спасибо, это сработало как чудо! – SecureServer