Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

12 Stron V  « < 10 11 12  
Reply to this topicStart new topic
> [klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser
szajens
post 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

  1. $text='[ul]
  2. [li]Internet Explorer,
  3. [li][li][li][li][li][li]Firefox,[/li]
  4. [li]Google Chrome 4.0,[/li][/b][/b]
  5. [li]Safari 3.0.[/li]
  6. [/ul]';


  1. <ul>
  2. <li>Internet Explorer,<br />
  3. <b>Firefox,</b></li></b>
  4. <li>Google Chrome 4.0,</li>
  5. <li>Google Chrome 4.0,</li>
  6. <li>Safari 3.0.</li>
  7. </ul>


edit:w rzędzie li jest w środku b, poprostu forumowe bbcode wycieło

Ten post edytował szajens 6.07.2014, 11:01:02
Go to the top of the page
+Quote Post
boro11
post 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ę smile.gif
Go to the top of the page
+Quote Post
Forti
post 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:

  1. <?php
  2.  
  3. namespace acme\DemoBundle\Twig;
  4.  
  5. use acme\DemoBundle\Lib\Bbcode\BbCode;
  6.  
  7. class BbcodeExtension extends \Twig_Extension
  8. {
  9. public function getFilters()
  10. {
  11. return array(
  12. new \Twig_SimpleFilter('bbcode', array($this, 'bbCodeParser')),
  13. );
  14. }
  15.  
  16. public function bbCodeParser($rawText)
  17. {
  18. $text = htmlspecialchars($rawText);
  19. $bbcode = new BbCode();
  20. $bbcode->parse($text, false);
  21.  
  22. return $bbcode->getHtml();
  23. }
  24.  
  25. public function getName()
  26. {
  27. return 'acme_bbcode_extension';
  28. }
  29. }


Dodatkowo service (acme/DemoBundle/Resources/Config/services)
i w twig oczywiście musimy zrobić tak:

  1. services:
  2. acme.bbcode_extension:
  3. class: acme\DemoBundle\Twig\BbcodeExtension
  4. tags:
  5. - { name: twig.extension }


w twigu oczywiście:

  1. {{ comment.text|bbcode|raw }} // |raw musi być, inaczej twig robi dodatkowe swoje htmlspecialchars, który my zrobiliśmy przed parsowaniem.



Może komuś się przyda, zwłaszcza żę mamy w tym bbcode m.in. youtube wink.gif


edit:

czy wookie nie obrazi się, jak zrobie z tego odzielnego, nie zależnego Bundle dla symfony i umieszcze na Package wraz z composerem? wink.gif

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
Go to the top of the page
+Quote Post
wookieb
post 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ą smile.gif Jak dodasz to umieszczę potem link do Twojego bundle smile.gif

RAW nie będzie potrzebny jeśli ... http://twig.sensiolabs.org/doc/advanced.ht...omatic-escaping
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
Forti
post 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 tongue.gif

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
Go to the top of the page
+Quote Post
wookieb
post 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 smile.gif

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 smile.gif


--------------------
Go to the top of the page
+Quote Post
pionas
post 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 :)
Go to the top of the page
+Quote Post

12 Stron V  « < 10 11 12
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 15:26