09.02.2014 o 15:11

[PHP] Jak napisać własny BBCode?

Witam
Dzisiaj pokażę wam mój sposób na formatowanie tekstu tak jak np. na forach internetowych.
Przykłady BBCode znajdziecie Tutaj.



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

Komentarze
© 2010 - 2024 - Karol Drąg
Wszelkie prawa zastrzeżone
Polityka plików cookies