[klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser |
[klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser |
2.03.2009, 14:10:58
Post
#1
|
|
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 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
-------------------- |
|
|
6.07.2014, 10:57:02
Post
#221
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 4 Dołączył: 3.01.2010 Ostrzeżenie: (0%) |
Przepuszcza 2 razy </b> co może troszkę zepsuć stronę, niestety.
Nie sprawdzałem innych tagów
edit:w rzędzie li jest w środku b, poprostu forumowe bbcode wycieło Ten post edytował szajens 6.07.2014, 11:01:02 |
|
|
6.08.2014, 04:04:36
Post
#222
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 11 Dołączył: 9.07.2010 Skąd: Warszawa Ostrzeżenie: (0%) |
Hej,
przejrzałem dokumentację i parę tagów dostosował pod swoje potrzeby, ale mam problem z emotikonami. Czy jest możliwość żeby parser wyłapywał z tekstu i zamieniał na obrazki "uśmieszki" Są dodawane do bazy danych bez znaków "[" i "]" dlatego mam lekki problem w ustawieniu tak parsera żeby brał pod uwagę sam tekst bez tych otwierających i zamykających nawiasów. Jest taka możliwość? Z góry dziękuję za pomoc jak i za samą klasę |
|
|
14.12.2014, 11:08:42
Post
#223
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) |
Ze względu na beznadzieje parserów BBcode dla symfony (jeden nie działa na wyższych v niż 2.4, drugi jakieś bugi mi z lokalizacją - nie istotne), pozwoliłem sobie na modyfikację biblioteki. Dodałem namespace i utworzyłem sobie twig extension.
wystarczy dodać namespace do: bbcode BbCodeSettings DataValidator oraz wszelkie required w tych 3 klasach zamienić na po prostu use. W katalogu filters jest troche inaczej - dodajemy use lecz nie dodajemy namespace. Jest to mało oryginalne rozwiązanie, lecz działające. Zrobiłem twig extension w taki sposób:
Dodatkowo service (acme/DemoBundle/Resources/Config/services) i w twig oczywiście musimy zrobić tak:
w twigu oczywiście:
Może komuś się przyda, zwłaszcza żę mamy w tym bbcode m.in. youtube edit: czy wookie nie obrazi się, jak zrobie z tego odzielnego, nie zależnego Bundle dla symfony i umieszcze na Package wraz z composerem? Ten post edytował Forti 14.12.2014, 11:11:28 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
14.12.2014, 11:35:43
Post
#224
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Z przyjemnością Jak dodasz to umieszczę potem link do Twojego bundle
RAW nie będzie potrzebny jeśli ... http://twig.sensiolabs.org/doc/advanced.ht...omatic-escaping
Powód edycji: [wookieb]:
-------------------- |
|
|
5.02.2015, 22:38:03
Post
#225
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) |
Wookie pilnuj mnie
Całość mam już gotowe - troche refactoringu i jeszcze testy muszę napisać, chociaż i tak aby dodać do "oficjalnego" repo musi być pokryte nimi 80% kodu ;d https://github.com/Fortidude/bbcode/ Ten post edytował Forti 5.02.2015, 22:38:37 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
6.02.2015, 05:26:04
Post
#226
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Na pewno zrobisz to lepiej
Pisałem to tak dawno temu iż wiem, że teraz zrobiłbym to zupełnie inaczej. Swoją drogą polecam ten oto kurs https://www.coursera.org/course/compilers zanim zaczniesz pracę nad parserem -------------------- |
|
|
1.03.2015, 19:35:18
Post
#227
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 2 Dołączył: 25.03.2009 Skąd: Pionki Ostrzeżenie: (0%) |
Hej,
po aktualizacji PHP do 5.4.38 parser nie działa. Wiecie czemu tak się dzieje? -------------------- Organizujesz konkurs? Chcesz coś wygrać? Wejdź na www.e-Konkursy.info :)
|
|
|
Wersja Lo-Fi | Aktualny czas: 13.06.2024 - 07:48 |