Jak napisać własny BBCode? To proste wystarczy nam do tego PHP i dwie funkcje preg_replace(); i str_replace();
Dzięki tym funkcjom możemy podmienić dany ciąg w tekście na inny.
Na przykład, chcemy zrobić pogrubienie tekstu, w bazie będzie pisać [b]pogrubiony[/b], a dzięki preg_replace(); podmienimy na HTML <b>pogrubiony</b>.
Kod będzie wyglądał tak:
$text = preg_replace('/\[b\](.*?)\[\/b\]/', '<b>$1</b>', $text);
Coś trudniejszego np. link gdzie podajemy nazwę linku i adres linku:
$text = preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/', '<a href="$1">$2</a>', $text);
Myślę, że kod nie jest taki trudny i łatwy do zrozumienia, wyjaśnię tylko co oznacza (.*?) i $1, $2.
(.*?) tekst który chcemy wyciągnąć z BBCode, a $1, $2 to fragment który chcemy wyświetlić w HTML.
Aby zmieniać tekst na minki np. :) na jakąś minkę używamy str_replace(); np.
$text = str_replace(':)', '<img src="usmiech.png" />', $text);
Dla ułatwienia działania możemy zrobić własną funkcję BBCode, na przykład:
<?php
function BBCode($text){
$text = preg_replace('/\[b\](.*?)\[\/b\]/', '<b>$1</b>', $text);
$text = preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/', '<a href="$1">$2</a>', $text);
$text = str_replace(':)', '<img src="usmiech.png" />', $text);
return $text;
}
?>
Przykład użycia:
$text = 'Serdecznie zapraszam na [url=https://karol-drag.eu][b]mój blog[/b][/url] :)';
echo BBCode($text);
Efekt:

Mam nadzieję, że komuś się przyda i spodoba taki sposób :)
Pozdrawiam
DraG