[klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser |
[klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser |
7.11.2009, 15:13:36
Post
#61
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
Przetestowałem link i jest ok. Proszę upewnij się czy na pewno masz poprawną wersję. Chodzi tylko o wyrażenia regularne więc mogło ci sie coś pomotać, albo coś nadpisałeś Jednak moja wina patrzałem na zły wpis ;] Cytat Chodzi ci o sam czysty tekst? Jeżeli tak to aktualnie nie brałem takiej opcje pod uwagę (a może faktycznie się przydać). Aczkolwiek możesz to uczynić trochę okrężną drogą. Pobrać zajawkę i wywalić z niej html, pomyślę nad tym. tak czysty tekst daję na przykładzie http://wklejasz.pl/user/zobacz/Zdunek o wiele lepiej by było gdyby znaczniki poznikały, ew by b i u zmieniły się w html a cała reszta by zniknęła(głównie obrazki, filmiki YT itp.) z wiadomych powodów |
|
|
8.11.2009, 15:44:10
Post
#62
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Pomysł ciekawy. Dlatego dodałem do tagów opcję hide_body_in_cut_text (domyślnie w img i youtube). Oznacza ona, że zawartość danego taga nie będzie pokazywana, ani nie będzie wpływała na długość zajawki w skracanym tekście.
Wcześniej była opcja w ustawieniach parsera (BbCodeSettings) o nazwie availableTags. Jest ona tablicą w której podajemy nazwy tagów, które są dostępne w parserze. Rozszerzyłem opcje o "removeNotAvailableTags" (domyślnie true). Oznacza ona czy usuwać tagi, które nie są dostępne. Wygląda to w ten sposób Kod $bbcode = new BbCode(); $text = '[i]Tekst[/i] [b]do skrócenia[/b] [img]Adres obrazka[/img] Dodatkowy tekst[/i]'; $bbcode->getSettings()->availableTags = array('i', 'img'); //img jest konieczny aby parser wiedział, żeby go NIE pokazywać przy cutText $bbcode->parse($text); echo $bbcode->cutText(20); // mniej więcej coś takiego [i]Tekst[/i] do skrócenia ... Zmiany w plikach Image.php (dodana opcja) Youtube.php (dodana opcja) BbCode.class.php (Zmiany w metodach _createNode, _filtersParseBody, cutText) BbCodeSettings.class.php (poprawiono komentarze, dodano opcję removeNotAvailableTags) -------------------- |
|
|
24.11.2009, 17:42:05
Post
#63
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
mam pytanko, w jaki sposób podczepić GeSHi ?
znalazłem gdzie // tutaj mozemy dodać geshi czy to tez sie podoba ale nie mam bladego pojęcia w jaki sposób to uczynić Edit: Próbowałem tak łopatologicznie wstawić ale tak jak ktoś wcześniej pisał, wywala jakby ktoś przeleciał htmlspecialchars... funkcja:
Ten post edytował Zdunek 24.11.2009, 17:42:34 |
|
|
24.11.2009, 21:05:29
Post
#64
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Jest to zabezpieczenie przed tym aby czasem autor filtra, nie zapomniał o zabezpieczeniu przed xss. Dlatego dodajemy flage "nohtmlspecialchars" aby przy budowanie tekstu końcowego, nie traktował danego NODE'a htmlspecialchars.
-------------------- |
|
|
24.11.2009, 21:24:48
Post
#65
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
Jest to zabezpieczenie przed tym aby czasem autor filtra, nie zapomniał o zabezpieczeniu przed xss. Dlatego dodajemy flage "nohtmlspecialchars" aby przy budowanie tekstu końcowego, nie traktował danego NODE'a htmlspecialchars.
wrzuciłem to, niestety nie zadziałało |
|
|
24.11.2009, 23:25:45
Post
#66
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Faktycznie był mały błąd. Poprawiony + podany wzór używania geshi
Zmiana plików: Filters/Url.php Filters/Code.php (funkcja obsługująca geshi zakomentowana ) -------------------- |
|
|
25.11.2009, 20:06:57
Post
#67
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
mam jeszcze jedno pytanko,
w jaki sposób zrobić obsługę na zasadzie będzie
i by do geshi podawało ten atrybut lang ? próbowałem się wzorować na Url ale niestety nic mi z tego nie wyszło Ten post edytował Zdunek 25.11.2009, 20:07:36 |
|
|
25.11.2009, 21:06:06
Post
#68
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Oczywiście.
Możesz zrobić to za pomocą atrybutu, albo zlecić to oddzielnym tagom. 1) Atrybut a) Należy stworzyć ustawienia twojego atrybutu (szczegóły w readme)
Atrybut jaki posiada tag jest w tagu otwierającym
Druga lepsza opcja to utworzenie taga dla każdego języka
Wybór należy do Ciebie. -------------------- |
|
|
25.11.2009, 22:54:30
Post
#69
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
Cytat public function parsePhp($tag, &$openNode, &$body, &$closeNode) { $language = 'php'; $this->parseCode($tag, $openNode, $body, $closeNode, 'php'); } jakby ktoś kiedyś przeglądał, powyżej była literówka a idzie zrobić tak aby dodawać tylko
a była jedna funkcja parsująca to? zaoszczędziło by to sporo czasu i ułatwiło całość Ten post edytował Zdunek 25.11.2009, 23:16:45 |
|
|
26.11.2009, 00:35:53
Post
#70
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Możesz. Przejrzyj zmienna $tag jaka dostajesz do funkcji i kombinuj
-------------------- |
|
|
26.11.2009, 16:09:44
Post
#71
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
dzięki, udało się podczepić
chyba znalazłem następny błąd f(x) \xrightarrow{T_{[1,5]}}g(x) zmienia się w f(x) \xrightarrow{T_{}}g(x) |
|
|
26.11.2009, 16:42:18
Post
#72
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Nie jest to błąd tylko ustawienie.
BbCodeSettings->removeNotAvailableTags ustaw na false -------------------- |
|
|
26.11.2009, 18:46:03
Post
#73
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
Acha, dzięki
a jeszcze jedna rzecz którą zauważyłem przy ustawianiu wielkości czcionek, jeśli czcionka jest za duża, bądź za mała to wywala błąd, mi w kohanaphp pokazuje 'Out of range (maximal)' myślę że lepszą opcją byłoby po prostu ustawienie tej wielkości to maksymalnej bądź minimalnej, a nie wywalenie błędu Ten post edytował Zdunek 26.11.2009, 21:06:33 |
|
|
28.11.2009, 19:56:24
Post
#74
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Widocznie miałem wyłączone pokazywanie błędów.
Poprawka oczywiście na serwerze Dodano @ przed wywołaniami metod DataValidatora w metodzie _parseAttributes Poprawiłem również metodę _getTagInfo oraz _createNode -------------------- |
|
|
1.12.2009, 02:48:47
Post
#75
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 1.12.2009 Ostrzeżenie: (0%) |
Witaj,
Bardzo przyjemna klasa, kawałek dobrej roboty. Mam jednak z nią pewien zgryz - czy da się ją przekonać do parsowania składni list znanej z phpBB? Chodzi mi o formatowanie typu jak w tym forum: [ list] [*]a [*]b [*]c [/list] oraz [ list=1] [*]a [*]b [*]c [/list] Takie tagi to koszmar każdego parsera tworzonego pod składnię znaną z html (a ten na taki wygląda). Moje próby spełzły na niczym - zrobiłem to dookoła modyfikując javascriptowy edytor pod składnię parsera. Da się to jakoś rozwiązać? |
|
|
2.12.2009, 11:14:08
Post
#76
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Da się przekonać.
Jak pisałem na początku tagi są dostosowane do "standardu" z http://bbcode.org/reference.php Oczywiście da się zrobić tak jak chcesz. Niestety nie jestem w stanie tego zrobić za ciebie w najbliższym czasie dlatego dam małe podpowiedzi. I zamieniasz włąściwość $tags
Co dalej? Piszesz kod obsługi listy parseList do której dostajesz następujące argumenty $tag - tablica informacji o tagu ( w naszym przypadku o tagu list) &$openNode - tag otwierajacy &$body - zawartosc pomiedzy tagami list &$closeNode - tag zamykajacy $settings - ustawienia parsera Na podstawie tablicy body wiesz co wpisał użytkownik. Przejrzyj ją a będziesz już wiedział co dalej z tym zrobić -------------------- |
|
|
4.01.2010, 20:18:43
Post
#77
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 1.12.2009 Skąd: lublin Ostrzeżenie: (0%) |
mi sie podoba, sprobuje poczytac Twoj kod i sie czegos nauczyc... co by nie byc lama^^
plus ode mnie ;-) E: nie moge dac plusa w nie swoim temacie nie wazne... Ten post edytował tog 4.01.2010, 20:20:06 |
|
|
11.01.2010, 14:04:44
Post
#78
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
Witam, znalazłem następny błąd
tekst z tego artykułu http://osnews.pl/zapowiedz-swiata-post-nielegalnej-kopii/ i zdaje mi się że przez => ucina 1/3 tekstu po przerzuceniu tekstu przez parser PS: Kod kopiowałem jako mirror bo strona padła jak ktoś wrzucił na wykop |
|
|
12.01.2010, 10:26:09
Post
#79
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Hmm nie zauważyłem takiej przypadłości. Mógłbyś wrzucić dokładny tekst jaki podałeś parserowi? (wklej.org badz wystawić gdzieś na serwerze )
-------------------- |
|
|
12.01.2010, 20:31:33
Post
#80
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) |
http://wklejasz.pl/t.txt (plik kodowany w utf-8)
i jak wrzuciłem zamiast > odpowiednik w kodzie, to nie ucięło tekstu |
|
|
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 07:35 |