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
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
czekaj... czekaj nie wiem czemu myslalem, ze parser jest zgodny z xhtml i uzywa np. <span style="weight: bold;"></span> zamiast <b></b> w kazdym razie tak nie jest... co prawda uzywam htmla a nie xhtmla, ale jeszcze jakis czas temu szukalem parsera do xhtmla, w sumie to bez tego caly parser jest neiwiele warty, bo mozna sobie na szybko napisac niewiele gorszy, a plikow ma tyle co polowa cmsa To napisz. Ocenimy. Stwórz konkurencję to będziemy gadać. A sprawdź czy Kod <span style="weight: bold"></span> jest NIE poprawne a dopiero potem gadaj. Jeżeli piszesz cmsa na 10 plikach to dobrze, ciesz się ale jeżeli nie znasz się na wydajnym organizowaniu struktury plików, obiektów i celu dla jakiego to zorganizowałem (a z tego co widzę to nie znasz się) to się nie wypowiadaj, albo jak już zapytaj. Rozumiem opinie negatywne ale ta jest zupełnie bezpodstawna. Dodatkowo zadziwię cię. Możesz zmienić męczący cię kod na B, I, U, LI. BA! Nawet możesz sobie zamienić na "MOJ_TAG_POGRUBIENIA_KTOREGO_UZYWAM_W_XML_A_NASTEPNIE_TRANSFORMUJE_ZA_POMOCA _XSLT". 1) Element B istnieje w XHTMLu 2) Dalece bardziej poprawnym jest użycie Kod <b>test</b> , niż Kod <span style="font-weight: bold">test</span> http://webdesign.about.com/od/htmltags/p/bltags_b.htm Cytat If you can't use the <strong> element, then you should consider using the CSS font-weight property. Sprawdźcie czy jest poprawne
Semantycznie nie jest, aczkolwiek validator kod przepuszcza. |
|
|
|
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
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: 7.12.2025 - 00:38 |