Post
#201
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Projekt jest już na githubie pod adresem
https://github.com/wookieb/bbcode Proszę o dodawanie informacji o bugach właśnie tam. UPDATE Wersja 1.2 [php bbcode, parser bbcode, advanced bbcode parser] Chciałbym dziś zaprezentować swój mechanizm parsujący kod bbcode oraz ułatwiający nam kontrolę nad tym czy tagi są prawidłowo używane. Klasa do pobrania: https://github.com/wookieb/bbcode/zipball/master Przykład działania: http://wookieb.pl/bbcode/test.php Readme.html w paczce oraz pod adresem http://wookieb.pl/bbcode/readme.html Licencja Skrypt wydany na licencji BSD. Dla własnego jak i komercyjnego użytku. Ustawienia parsera Ustawienia dla parsera znajdują się teraz w klasie BbCodeSettings. Ciekawsze z ustawień to Zaufany kod
Ustawienie kontroluje stopień sprawdzenia danych. Gdy kod bbcode sparsowaliśmy wcześniej to pobieramy jest wersję zaufaną i zapisujemy.
Przy ponownym odczytaniu kodu, możemy oznaczyć kod jak zaufany. Spowoduje to ominięcie wielu operacji kontroli atrybutów, przez co parsowanie jest szybsze. Kod $bbcode = new BbCode(); $text='[b] Bla Bla [i] Hehe'; $bbcode->parse($text, false); // nie chcemy wyniku wiec ustawiamy na false $code=$bbcode->getBbcode(); // [b] Bla Bla [i] Hehe[/i][/b] // $code zapisujemy // po pewnym czasie odczytujemy i parsujemy go jeszcze raz $bbcode->getSettings()->trustText = true; echo $bbcode->parse($code); Dostępność tagów Możliwe jest włączenie tylko niektórych tagów parsera Kod $bbcode = new BbCode(); $text = '[b]Pogrubienie[/b] [i]Kursywa[/i]'; echo $bbcode->parse($text); // <b>Pogrubienie</b> // <i>Kursywa</i> $bbcode->getSettings()->availableTags = array('b'); echo $bbcode->parse($text); // <b>Pogrubienie</b> // Kursywa Walidacja HTML (kolejności użycia) Domyślnie parser poprawia kolejność użycia tagów. np kod Kod [b] pogrubienie [i] Kursywa[/b] [ul] [li]Element listy [/b] [/i] Zamieni na Kod [b] pogrubienie [i] Kursywa[/i][/b] [ul] [li]Element listy[/li] [/ul] Tworzenie zajawek Parser potrafi tworzyć zajawke o odpowiedniej ilości znaków (ignorując przy tym tagi bbcode). Wspiera różne kodowania. Test pod adresem http://wookieb.pl/bbcode/cut_test.php Rozszerzanie możliwości Za pomocą tworzenia nowych tagów i dodawania ich specjalnych ustawień można rozszerzyć bbcode o dodatkowe tagi, możliwości. Szczególnie chciałbym zwrócić uwage na możliwość "przetrzepania" kodu przez funkcje filtrów, dzięki którym możemy tworzyć zaawansowane zależności. Informacje na temat ustawień dostępne pod linkiem http://wookieb.pl/bbcode/readme.html ZACHĘCAM DO OCEN, WNOSZENIA WŁASNYCH UWAG A TAKŻE PROPOZYCJI ZMIAN Mam nadzieję, że przyda się niejednej osobie, która dostrzeże możliwości użycia parsera NIE TYLKO do Bbcode (IMG:style_emoticons/default/smile.gif) i nie tylko. Update - 2009.05.31 Dodałem tag youtube do paczki. Inne zmiany: - poprawiony generowany kod html dla taga IMG - poprawiona metoda wyszukiwania nazwy taga - poprawiona szybkość działania - przeniesienie ustawień do BbCodeSettings - poprawiona walidacji urli - dodatkowe zabezpieczenia przed XSS Ten post edytował wookieb 23.08.2011, 19:46:20
Powód edycji: [wookieb]: [wookieb]: [Spawnm]: update
|
|
|
|
wookieb [klasa] Zaawansowany parser bbcode (php5) 2.03.2009, 14:10:58
boro11 Witam!
Od jakiegoś czasu używam Twojego parser... 3.04.2013, 20:38:54
wookieb Faktycznie był mały błąd w parserze. Poprawione - ... 3.04.2013, 21:16:28
boro11 Teraz działa idealnie dziękuję 3.04.2013, 22:20:49
Lirdoner Witam, chciałbym aby jeżeli tekst odnośnika do str... 19.04.2013, 12:15:08
wookieb https://github.com/wookieb/bbcode/blob/mast...Filt... 19.04.2013, 17:08:48
benzulli Witam,
Jak mogę to umieścić na swojej stronie? Ch... 18.01.2014, 23:49:44
wookieb Musisz zastosować parser bbcode przy zapisie aby z... 19.01.2014, 07:13:58
benzulli [PHP] pobierz, plaintext <form action="... 19.01.2014, 13:24:40
wookieb Najpierw naucz się programować. Koniec dyskusji. 19.01.2014, 14:02:16
benzulli Witam, poradziłem sobie z tym już jakiś czas temu,... 15.02.2014, 21:36:58
com pokaż to na przykładzie, bo wrzuciłeś jakieś fragm... 15.02.2014, 21:41:34
benzulli [PHP] pobierz, plaintext blablablablabla 123123131... 15.02.2014, 21:58:02
com Źródło prawdę Ci powie, nwm co to za parser ale co... 15.02.2014, 22:08:05
benzulli Wiem co jest nie tak - po prostu każde przeniesien... 15.02.2014, 23:49:37
com tak ale wgl poco Ci to br tu? przecież jego to się... 16.02.2014, 00:39:59
benzulli Właśnie go nie chcę, a to jest w parserze ustawion... 16.02.2014, 00:43:52
com no to warunkiem sprawdzaj czy jesteś w tabeli jeśl... 16.02.2014, 00:59:31
benzulli Dzięki, po prostu zastosuję preg_replace do tych 6... 16.02.2014, 08:59:28
pionas I ja podepnę się do tematu..
ckeditor z wtyczką b... 17.02.2014, 09:03:54
sazian kiedyś przerabiałem ten problem z listami
może ko... 22.06.2014, 21:51:14
szajens Przepuszcza 2 razy </b> co może troszkę zeps... 6.07.2014, 10:57:02
boro11 Hej,
przejrzałem dokumentację i parę tagów dostoso... 6.08.2014, 04:04:36
Forti Ze względu na beznadzieje parserów BBcode dla symf... 14.12.2014, 11:08:42
wookieb Z przyjemnością Jak dodasz to umieszczę potem lin... 14.12.2014, 11:35:43
Forti Wookie pilnuj mnie
Całość mam już gotowe - troch... 5.02.2015, 22:38:03
wookieb Na pewno zrobisz to lepiej
Pisałem to tak dawno ... 6.02.2015, 05:26:04
pionas Hej,
po aktualizacji PHP do 5.4.38 parser nie dzi... 1.03.2015, 19:35:18 ![]() ![]() |
|
Aktualny czas: 20.01.2026 - 19:35 |