Post
#101
|
|
|
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
wookieb Problem poprawiony i nowa paczka jest na serwerze.... 16.05.2010, 22:34:46
redelek Witam,
Ostatnio kolega @wookieb podał mi kod do s... 25.05.2010, 10:31:34
wookieb Było
http://forum.php.pl/index.php?act=findpost..... 25.05.2010, 10:40:23
redelek oki tego nie widziałem
Ale jak zrobiłem zmiany z ... 25.05.2010, 11:12:51
wookieb A no tak bo zmienił się parser
[PHP] pobierz, plai... 25.05.2010, 11:30:07
redelek Poprawiłem i teraz mi wyświetla
Fatal error: Call ... 25.05.2010, 13:24:25
wookieb To w takim razie sprawdź jaka funkcja przeparsuje ... 25.05.2010, 13:28:04
redelek Witam,
Już doszedłem prawie gdzie był problem. W ... 26.05.2010, 09:27:14
wookieb A gdzie ty masz tag "code" uzyty?
Poza t... 26.05.2010, 09:44:55
redelek to forum wycieło znaczniki code.
Kurcze no mam te ... 26.05.2010, 10:06:39
wookieb Przecież cały czas mówię o dodaniu atrybutu LANG d... 26.05.2010, 10:17:00
redelek Dodałem atrybut
[PHP] pobierz, plaintext public $... 26.05.2010, 11:26:51
wookieb Przeczytaj jeszcze raz moje posty.
napisałem:
DODA... 26.05.2010, 11:29:47
redelek A może mi Pan pomóc,
Kurcze nie jestem taki mocy ... 26.05.2010, 12:32:28
GyniO Mam jeszcze tylko 1 pytanie, w którym miejscu mogę... 23.06.2010, 13:44:34
Crozin Masz, pokalało Cię za używanie twardych spacji do ... 23.06.2010, 13:59:24
GyniO Ok działa
Parser
zamienia \t na 4x nbsp w ... 23.06.2010, 14:10:04
athabus Właśnie szukałem czegoś do parsowania bbcodu z moż... 2.07.2010, 13:32:07
wookieb Cytat(athabus @ 2.07.2010, 14:32:07 )... 3.07.2010, 07:28:30
Zajec Potrzebuję wymienić parser BBCode i cieszę się że ... 3.03.2011, 22:08:21
wookieb Wystarczy dodać katalog z BbCode do include_path 3.03.2011, 22:11:02 
Zajec Cytat(wookieb @ 3.03.2011, 22:11:02 )... 8.03.2011, 12:57:04
gorzat witam, sciagnalem sobie to, ale nie bardzo wiem ja... 22.03.2011, 18:33:41
Avatarus a jak zrobić zwykłe prasowanie Kod<br />
W... 3.04.2011, 13:19:02
wookieb Musisz wcześniej zamienić "<br />... 3.04.2011, 13:37:46
mlawnik A czy jest możliwość parsowania youtube po samym I... 7.04.2011, 16:21:07
wookieb Tak. W tagu podajesz po prostu tylko jego ID 7.04.2011, 17:57:57
mlawnik No ale jak podaje samo id to mi sie wyswietla ramk... 10.04.2011, 16:44:28
wookieb Jestem kretynem. Mój błąd
W pliku Filter/Youtube.p... 10.04.2011, 16:51:43
mlawnik Poprawione.
Zaraz dorzuce twoje przyklady i zrobi... 10.04.2011, 17:20:41
wookieb Raczej nie forka. I tak będę wydawał nową wersję. 10.04.2011, 17:21:39
mlawnik Czekam z nieciepliwością.
EDIT: Dla potomnych:
Z... 10.04.2011, 18:00:19
nekomata Jedna rzecz , czy parser blokuję html'a i XSS ... 11.04.2011, 16:45:04
wookieb Sam blokuje. 11.04.2011, 17:01:35
nekomata Dzięki , zaoszczędzi mi to trochę włosów na głowie... 11.04.2011, 17:12:04
wookieb Nie planuje, bo jest to zbyt zależne od widoku. 12.04.2011, 21:10:03
nekomata W sumie dzięki takiemu łatwemu do zrozumienia rozp... 13.04.2011, 18:41:55
szczeku Cześć,
Na początek napisze, że świetny parser stw... 15.04.2011, 13:02:09
nekomata @mlawnik popraw tag youtube'a dokładnie mam na... 16.04.2011, 00:26:33
wookieb 1) Tak zajmę się tym
2) Niestety raczej nie ma tak... 16.04.2011, 10:53:43
mlawnik @nekomata, poprawione. 17.04.2011, 16:00:19
evolucja Jak korzystać z tej zajawki? Mam w pętli wyświetla... 8.05.2011, 18:12:43
wookieb A na jakiej podstawie mogę stwierdzić co jest źle ... 8.05.2011, 18:17:02
evolucja No spróbuj sobie do tego $news['content... 8.05.2011, 18:22:29
wookieb Zbadaj tekst za pomocą var_dump i sprawdź czy nie ... 8.05.2011, 18:24:50
evolucja 1. Wychodzi string(397) podczas gdy tekst wklejony... 9.05.2011, 16:38:09
wookieb Cytat(evolucja @ 9.05.2011, 17:38:09 ... 9.05.2011, 17:28:13
evolucja Łap paczkę z przykładem. Coś z kodowaniem nawet je... 9.05.2011, 19:05:17
wookieb Ok poprawione.
Dzięki za znalezienie błędu 9.05.2011, 19:40:31
mlawnik Można prosić o numery linijek i typy zmian? Staram... 9.05.2011, 20:11:48
wookieb Jasne.
Linia 1357 bbcode.class.php
[PHP] pobierz, ... 9.05.2011, 20:17:05
mlawnik Poprawiłem i przypominam, że repo z kilkoma nowymi... 9.05.2011, 20:21:54
evolucja Cytat(wookieb @ 9.05.2011, 20:40:31 )... 10.05.2011, 13:24:25
mlawnik Poprawki są od strony 6, nie wiem, ale chyba wooki... 10.05.2011, 15:02:30
wookieb Tak wrzuciłem Twoje poprawki mlawnik
Projekt jest ... 10.05.2011, 21:20:37
mlawnik Katalogi z SVN-a ci się skopiowały.
Przydałby się... 20.06.2011, 20:43:27
wookieb Hmm u mnie wszystko śmiga elegancko bez żadnych pr... 20.06.2011, 21:22:38
mlawnik U autora zawsze śmiga
live demo:
yopqsdev.orche... 20.06.2011, 21:24:24
wookieb Miałeś starą wersję parsera.
Zassaj nową.
Wrzuciłe... 20.06.2011, 22:18:37
mlawnik Faktycznie, trochę lepiej. Zobaczę kodowanie, i da... 21.06.2011, 18:52:17
wookieb Narazie nie za bardzo. To repo całego projektu (cz... 22.06.2011, 14:26:03
mlawnik A gałąź z kodem (praca na niej) i merge z masterem... 22.06.2011, 16:30:36
wookieb A merge usunąłby pliki usunięte w branchu z kodem. 22.06.2011, 16:41:39
mlawnik Szukałem, szukałem i... znalazłem:
http://stack... 22.06.2011, 19:42:07
evolucja Zgłosiłem błąd na githubie 19.08.2011, 13:09:43
master_25 Witam, takie pytanie:
Czy jest w miarę prosta możl... 14.09.2011, 17:38:47
Tanner963 Co muszę zrobić, aby nie zamykało automatycznie ni... 17.09.2011, 20:13:03
wookieb Niedomykanie a poprawa kolejności to 2 różne rzecz... 17.09.2011, 20:55:22
Tanner963 Mam kolejny problem - wstawiłem BBCode'a od ko... 24.09.2011, 17:40:19
wookieb A dokłądniej?
Przykład? 24.09.2011, 18:34:16
Tanner963 Sory, nie sprecyzowałem..
Poprawka:
Parsuje tag ko... 24.09.2011, 18:59:15
favik Witam,
ogólnie klasa super, mam jednak mały mankam... 27.03.2012, 13:50:29
wookieb Masz rację - to mów wielki błąd.
Przepraszam barzd... 27.03.2012, 20:30:46
xxdrago A ja się chciałem zapytać bo już się bawię kilka m... 30.03.2012, 19:28:42
wookieb Wszystko co nie jest sparsowane bezpośrednio przez... 31.03.2012, 21:49:05
xxdrago Ok, teraz mi się podoba, jak wyłączyć htmlspecialc... 3.04.2012, 20:15:13
wookieb [PHP] pobierz, plaintext $node['nobr'] = t... 3.04.2012, 20:22:24
xxdrago Super dziękuje, teraz mam taki problem nie wiem cz... 3.04.2012, 22:03:26
KG- Bardzo fajny skrypt, ale znalazłem jednego niewiel... 24.04.2012, 13:28:03
deluks1980 Więcej komplikacji z ustawieniem czegoś jakiegoś i... 10.05.2012, 14:14:26
wookieb [PHP] pobierz, plaintext 'size' => array( ... 10.05.2012, 18:24:17
deluks1980 Dzięki wielkie, ułożyłem coś podobnego według manu... 16.05.2012, 08:33:31
Lirdoner Odkopię trochę temat bo mam mały problem.
Jak zrob... 5.08.2012, 12:02:34
wookieb Aktualnie jest tak jeżeli zrobisz coś takiego
Kod... 5.08.2012, 16:49:43
corey1991 Witam, miałem okazję wykorzystać klasę i muszę pow... 9.09.2012, 12:11:07
wookieb Rozwiązanie jest OK. Wartość parametru jest genero... 9.09.2012, 19:32:26
Zaszczyk Chcę otrzymać zajawkę tekstu i używam takiego kodu... 24.09.2012, 22:03:01
wookieb Nie ma takiej możliwości.
Pobierz wersję HTML i us... 24.09.2012, 22:10:05
Zajec [PHP] pobierz, plaintext public function parseQuot... 3.11.2012, 11:42:21
wookieb @Zajec - bardzo dziękuję za wykrycie buga - błąd z... 3.11.2012, 18:39:39
Zajec Dzięki serdeczne! Widzę też, że przesiadłeś si... 3.11.2012, 19:00:33
wookieb Sztywne użycie php.net w checkUrl jest trochę... j... 3.11.2012, 19:13:23
Zaszczyk Zastosowałem tą klasę na swoim małym forum żeby, d... 8.11.2012, 18:41:12
wookieb Podaj proszę dokładną zawartość zmiennej $_PO... 8.11.2012, 18:55:05
Zaszczyk [PHP] pobierz, plaintext [qote]trolololo... 8.11.2012, 19:27:24
wookieb Tag zamykający quote był (jak domniemam) nieprawid... 8.11.2012, 20:04:25
Zaszczyk Mam problem z klasą, jak dodaje rekord do bazy to ... 12.12.2012, 16:54:45
wookieb To domyślne zachowanie które zabezpiecza przed tym... 12.12.2012, 17:19:47
pionas Cześć,
bardzo fajna klasa, niestety jednak dzisia... 17.02.2013, 10:05:47
wookieb Ściągasz wersję bezpośrednio z githuba?
Po uruchom... 17.02.2013, 10:28:54 ![]() ![]() |
|
Aktualny czas: 6.12.2025 - 15:15 |