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 (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
.radex No nie wiem, czy zapis do bazy jest szybszy od spr... 2.03.2009, 19:05:57
wookieb Cytat(.radex @ 2.03.2009, 19:05:57 ) ... 2.03.2009, 19:14:15
WebKing Cytat(wookieb @ 2.03.2009, 14:10:58 )... 9.03.2009, 18:28:58 
pyro Cytat(WebKing @ 9.03.2009, 18:28:58 )... 9.03.2009, 18:49:06 
bim2 Cytat(WebKing @ 9.03.2009, 18:28:58 )... 10.03.2009, 18:35:29
gebp Klasa działa fajnie. Jefnak z danego tutka nie jes... 11.03.2009, 21:33:51
wookieb I to był właśnie mój błąd... 11.03.2009, 23:01:22
gebp Dięki ~wookieb.
Z kolorem od razu pomogło.
Ja jed... 12.03.2009, 12:01:24
wookieb Cytat(gebp @ 12.03.2009, 12:01:24 ) J... 12.03.2009, 12:03:07
zegarek84 aż z ciekawości jak wrócę ze studiów po weekendzie... 12.03.2009, 12:21:00
normanos Bardzo ciekawa klasa, gratulacje. Wiem co mówię bo... 12.03.2009, 19:16:52
SHiP Ok sprawdziłem i dwie uwagi
1. jeśli umieścimy c... 17.03.2009, 17:44:53
wookieb Klasa została poprawiona i usprawniona. Dodałem ws... 14.05.2009, 08:49:51
slewin a ja pobrałem klasę ,wypakowałem ją do katalogu na... 14.05.2009, 13:38:36
wookieb Zapewne masz php4 zamiast php5 14.05.2009, 13:43:08
slewin na jednym mam PHP Version 5.0.4 a na tym gdzie pas... 14.05.2009, 13:47:14
wookieb CytatPHP 5 introduces Type Hinting. Functions are ... 14.05.2009, 13:50:47
slewin testuje paser od jakiegoś czasu i przyzna,m ... 28.05.2009, 13:48:38
wookieb Przykładowy filtr
youtube.php
[PHP] pobierz, ... 28.05.2009, 14:09:51
slewin dzięki , już łapie o co chodzi .
Będę się musia... 28.05.2009, 15:11:32
wookieb Wiec ten kod wstawiasz w miejsce Kod tutaj wpisuje... 28.05.2009, 15:12:43
slewin Tak zrobiłem wcześniej ,ale nie było widać odtwarz... 28.05.2009, 15:37:29
wookieb Zacznijmy od tego, że raczej coś źle zrobiłeś bo m... 28.05.2009, 18:40:55
Fixer może się przyda:) http://hobix.com/textile/quick.h... 30.05.2009, 12:41:38
Fafu Witam!
http://wookieb.pl/bbcode/cut_test.php -... 23.06.2009, 23:21:59
wookieb Oczywiście masz rację.
Poprawiłem c... 24.06.2009, 09:20:51
Fafu Dzięki za odpowiedź, czy żeby u mnie działało wyci... 24.06.2009, 12:00:29
wookieb Tak aktualizowałem, pobierz nową paczkę 24.06.2009, 12:04:21
Fafu No niestety nadal coś nie działa...
wyświetla się:... 24.06.2009, 12:13:31
wookieb Sprawdź czy aby napewno poprawnie ściągnąłeś nowe ... 24.06.2009, 12:27:49
Fafu No niestety, ściągałem kilka razy i... 24.06.2009, 12:37:06
slewin a ja mam mały problem bo nie wiem jak stosować zna... 27.06.2009, 11:09:49
wookieb Nawet nie wiesz co to bbcode :/
http://bbcode.org/... 27.06.2009, 12:40:44
mowgli91 Kurczę, nie mogę ogarnąć jednej rzeczy - chciałbym... 8.07.2009, 16:03:37
MajareQ Ja mam pytanko z całkiem innej sceny. Jaka jest li... 22.09.2009, 16:24:20
wookieb Do własnego jak i komercyjnego użytku.
Nie znam si... 22.09.2009, 17:19:50 
MajareQ Cytat(wookieb @ 22.09.2009, 18:19:50 ... 23.09.2009, 09:38:23
lysiu U mnie śmiga, że hej!
Narazie poprawiłem jede... 23.09.2009, 00:10:14
wookieb Tak 23.09.2009, 09:39:59
lysiu no i na przykład do img nie dodajesz alt i nie zam... 23.09.2009, 10:34:20
wookieb Cytat(lysiu @ 23.09.2009, 01:10:14 ) ... 1.10.2009, 09:34:26
Spawnm UPDATE PARSERA.
Wszystkie nowinki w pierwszym pośc... 2.10.2009, 10:19:08
c3zi Wszystko fajnie wygląda. Brakuje tylko integracji ... 8.10.2009, 11:49:17
wookieb A co za problem zintegrować to samemu? A dlaczego ... 8.10.2009, 11:58:03
c3zi Swift jest zintegrowany w kohana.
Z tą integracją... 8.10.2009, 20:08:38
wookieb Pokaż jak zaimplementowałeś geshi. 8.10.2009, 20:14:07
c3zi Mam dwa pytania.
1. Jest jakaś opcja dostarczenia ... 22.10.2009, 13:46:49
wookieb 1) A readme.html czytał?
2) Opcje leave_* opisane ... 22.10.2009, 20:24:30
karol98 przyda się
użyję w swoim skrypcie 23.10.2009, 18:03:13
c3zi Jeszcze jedno pytanie. Da się zrobić odwrotną konw... 24.10.2009, 20:11:21
wookieb Tak da się tworząc filtry odwrotne. Aczkolwiek tak... 24.10.2009, 23:40:21
Zdunek nie wiem czy to tylko u mnie, czy znalazłem buga
j... 26.10.2009, 12:28:53
wookieb @Zdunek Poprawiłem błąd, Dzięki za info 27.10.2009, 21:53:43 
Zdunek Cytat(wookieb @ 27.10.2009, 22:53:43 ... 29.10.2009, 23:12:26
wookieb Linia 1233 29.10.2009, 23:17:35 
Zdunek Cytat(wookieb @ 29.10.2009, 23:17:35 ... 5.11.2009, 21:50:44
wookieb Wielkie dzięki
Przyznam, że wyrażenie skądś kopio... 5.11.2009, 23:21:38 
Zdunek Cytat(wookieb @ 5.11.2009, 23:21:38 )... 7.11.2009, 14:51:37
wookieb Przetestowałem link i jest ok. Proszę upewnij się ... 7.11.2009, 15:05:56 
Zdunek Cytat(wookieb @ 7.11.2009, 15:05:56 )... 7.11.2009, 15:13:36
wookieb Pomysł ciekawy. Dlatego dodałem do tagów opcję hid... 8.11.2009, 15:44:10
Zdunek mam pytanko, w jaki sposób podczepić GeSHi ?
znal... 24.11.2009, 17:42:05
wookieb Jest to zabezpieczenie przed tym aby czasem autor ... 24.11.2009, 21:05:29 
Zdunek Cytat(wookieb @ 24.11.2009, 21:05:29 ... 24.11.2009, 21:24:48
wookieb Faktycznie był mały błąd. Poprawiony + podany wzór... 24.11.2009, 23:25:45
Zdunek mam jeszcze jedno pytanko,
w jaki sposób zrobić o... 25.11.2009, 20:06:57
wookieb Oczywiście.
Możesz zrobić to za pomocą atrybutu, a... 25.11.2009, 21:06:06
Zdunek Cytatpublic function parsePhp($tag, &... 25.11.2009, 22:54:30
wookieb Możesz. Przejrzyj zmienna $tag jaka dostajesz... 26.11.2009, 00:35:53
Zdunek dzięki, udało się podczepić
chyba znalazłem nastę... 26.11.2009, 16:09:44
wookieb Nie jest to błąd tylko ustawienie.
BbCodeSettings-... 26.11.2009, 16:42:18
Zdunek Acha, dzięki
a jeszcze jedna rzecz którą zauważył... 26.11.2009, 18:46:03
wookieb Widocznie miałem wyłączone pokazywanie błędów.
Pop... 28.11.2009, 19:56:24
Borys_ Witaj,
Bardzo przyjemna klasa, kawałek dobrej rob... 1.12.2009, 02:48:47
wookieb Da się przekonać.
Jak pisałem na początku tagi są... 2.12.2009, 11:14:08
tog mi sie podoba, sprobuje poczytac Twoj kod i sie cz... 4.01.2010, 20:18:43
Zdunek Witam, znalazłem następny błąd
tekst z tego artyku... 11.01.2010, 14:04:44
wookieb Hmm nie zauważyłem takiej przypadłości. Mógłbyś wr... 12.01.2010, 10:26:09
Zdunek http://wklejasz.pl/t.txt (plik kodowany w utf-8)
i... 12.01.2010, 20:31:33
wookieb Niestety u mnie sytuacja nadal nie występuje.
O il... 12.01.2010, 20:49:31
Kamil Pietrzak czekaj... czekaj
nie wiem czemu myslalem, ze parse... 30.01.2010, 13:49:36
Crozin 1) Element B istnieje w XHTMLu
2) Dalece bardziej ... 30.01.2010, 14:45:42
wookieb Cytat(Kamil Pietrzak @ 30.01.2010, 13:49... 30.01.2010, 19:20:38
Kamil Pietrzak jestem za bardzo pro zeby pisac byle BB
szukalem ... 4.02.2010, 20:37:06
GyniO Czy istnieje możliwość do pisania w wartości titl... 14.02.2010, 09:39:29 
kallosz Cytat(GyniO @ 14.02.2010, 09:39:29 ) ... 14.02.2010, 10:17:43
wookieb Oczywiście, że jest i oczywiście, że wszystko jest... 14.02.2010, 09:43:37
GyniO No fakt, za readme wziąłem inny plik i stąd moja n... 14.02.2010, 10:42:43
lobopol A ja mam taki problem
mam aktualnie taki układ pli... 13.03.2010, 14:45:24
wookieb masz 2 wyjścia
1) dodać do include path katalog ... 13.03.2010, 14:51:44
lobopol Wielkie dzięki już wszystko dobrze działa. 13.03.2010, 15:02:35
kenobi13 Zauważyłem drobny błąd chyba.
W linijce 51 w pliku... 17.03.2010, 18:24:53
LapKom Czy jest mozliwość usprawnienia biblioteki/filtru ... 21.03.2010, 21:28:24
wookieb Cytat(kenobi13 @ 17.03.2010, 18:24:53... 21.03.2010, 22:18:32
LapKom A w jaki sposób mogę użyć asterixa w nazwie taga? ... 22.03.2010, 20:47:49
wookieb Cytat(kenobi13 @ 17.03.2010, 18:24:53... 22.03.2010, 23:47:15
LapKom [PHP] pobierz, plaintext <?php /** * ... 23.03.2010, 01:03:17
wookieb Ściągnij parser i skopiuj plik BbCode.class.php . ... 23.03.2010, 08:37:49
GyniO Mam problem z funkcją do skracania.
Przy skracani... 16.05.2010, 15:18:11 ![]() ![]() |
|
Aktualny czas: 24.10.2025 - 12:13 |