BBCode

09-09-2006 at 12:14 | In net, php, webmastering | Leave a Comment

W ramach tworzenia pracy licencjackiej (a dokładniej – forum), doszedłem do punktu, w którym działało już wysyłanie oraz wyświetlanie postów. Do zaimplementowania został zatem BBCode. Jako, że w kwestii JavaScriptu i wyrażeń regularnych nie jestem zbyt lotny, stwierdzilem, że skorzystam z tego, co stworzyli już inni i dostosuję do swoich potrzeb. Kwestia czasu też była dosyć ważna (im szybciej tym lepiej ;])

Ze strony przeglądarki sprawa nie była przesadnie trudna. Napisanie samemu prostego edytora BBCode nie sprawiłoby mi większego problemu, ale szkopuł pojawiał się w momencie, gdy chciałem wstawiać tagi BBCode do zaznaczonego tekstu. Takich edytorów w necie było już znacznie mniej. Ja pozwoliłem sobie skorzystać z tego, który jest standardowo w systemie phpBB modified by Przemo. I tę część można zakończyć – reszta to kwestia przeróbki (xhtml, css).

Znacznie większy problem stanowiła dla mnie późniejsza konwersja BBCode->HTML. Wprawdzie teoretycznie nie problem znaleźć gotowe funkcje, jest też i generator. Wszystko oparte na wyrażeniach regularnych. I niby ok, pozostawał jednak pewien dosyć poważny problem – nie obsługiwały one zagnieżdżonych tagów tego samego typu. Wydaje mi się to nieco absurdalne, bo bardzo często na forach można zobaczyć wielokrotne cytaty. W każdym bądź razie, w polskim internecie nie udało mi się nic znaleźć (PEAR z biblioteką odpadał, bo nie jest ona dodawana w standardzie, a nie każdy administrator serwera spełnia życzenia klienta). Na stronach zagranicznych nie było wiele lepiej. Wprawdzie udało mi się znaleźć funkcję, która obsługuje zagnieżdżone cytaty, ale bez podania autora. Niedługo później jednak wyszukałem zwycięzcę. Jest nim biblioteka Advanced BBCode.

Stosuje się to bajecznie. Z paczki potrzebne są tylko 2 pliki – abbc.cfg.php i abbc.lib.php. Tam, gdzie będzie używany BBCode, należy zinclude’ować drugi z nich, a następnie potraktować dany łańcuch znaków funkcją abbc_proc, np:

$post=abbc_proc($post);

Sporo tagów BBCode jest już wbudowane (zdefiniowane są w pliku abbc.cfg.php), ale ich modyfikacja, bądź dodanie nowych nie stanowi większego problemu – można kombinować do woli ze znacznikami i stylami, czyli wszystko schludnie i ładnie, jak należy – polecam, jak ktoś będzie potrzebował :)

No Comments Yet »

Kanał RSS z komentarzami do tego wpisu. Adres TrackBack

Dodaj komentarz

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Blog na WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.