Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

12 Stron V  « < 8 9 10 11 12 >  
Reply to this topicStart new topic
> [klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser
wookieb
post 10.05.2012, 18:24:17
Post #181





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. 'size' => array(
  2. 'open' => 'span',
  3. 'close' => 'span',
  4. 'attributes' => array(
  5. 'size' => array(
  6. 'attr' => 'style',
  7. 'type' => 'string',
  8. 'name' => 'font-size:',
  9. 'values' => array(
  10. '1' => '14px',
  11. '2' => '16px',
  12. '3' => '18px',
  13. '4' => '20px'
  14. ),
  15. 'replace' => true
  16. )
  17. )
  18. ),


http://wookieb.pl/bbcode/readme.html#string


--------------------
Go to the top of the page
+Quote Post
deluks1980
post 16.05.2012, 08:33:31
Post #182





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


Dzięki wielkie, ułożyłem coś podobnego według manuala, z tym, że u mnie nie działało to nadałem type jako number.

Dzięki. Kawał dobrej roboty.

Witaj,

Mam z tym jeszcze mały problem, nie wiem czy to bug, jednak gdy w treści jest HTML, a następnie użyję:

  1. $bbcode->parse($n->content, true );


To znaczniki takie jak
  1. <strong>tekst</strong>
,
  1. <u>tekst</u>
i wszystkie inne HTML'owe nie działają, czyli w zasadzie tak ma być.
Do czasu, kiedy użyję
  1. <a href="http://google.pl/">Tekst</a>
, wtedy zamiast tego, widzę:

  1. <a href="http://google.pl/...;>Tekst</a>


A co najlepsze,
  1. http://google.pl/...;>Tekst</a>
jest parsowana na link, czyli można to kliknąć, jednak odnośnik jest wtedy następujący:
  1. http://google.pl/%22%3ETekst%3C/a%3E
.

Dopiero, kiedy użyję:

  1. $bbcode->parse($n->content, false );
  2. $code = $bbcode->getBbcode();
  3. $bbcode->getSettings()->trustText = true;
  4. echo $bbcode->parse($code);


To
  1. <a href="http://google.pl/">Tekst</a>
nie jest parsowany i jest widoczny tak jak napisałem.
Moje pytanie; czy tak ma być? Muszę używać dodatkowych funkcji aby przeparsować tekst tylko dla <a> w tekście?

Pozdrawiam.
Go to the top of the page
+Quote Post
Lirdoner
post 5.08.2012, 12:02:34
Post #183





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

Ostrzeżenie: (0%)
-----


Odkopię trochę temat bo mam mały problem.
Jak zrobić aby używając taga img w wyniku końcowym wyświetlany obrazek był również odnośnikiem do tego obrazka?
Wiem, że można by zastosować url i w nim img ale dla wygody użytkowników wolałbym aby to działo się tylko przy wykorzystaniu img
Go to the top of the page
+Quote Post
wookieb
post 5.08.2012, 16:49:43
Post #184





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Aktualnie jest tak jeżeli zrobisz coś takiego
Kod
[URL][IMG]http://adres/obrazka.jpg[/IMG][/URL]

To url przyjmie adres obrazka.
Takie rozwiązanie jest znacznie bardziej użyteczne niżeli ciągłe wymuszanie aby obrazek zawsze był linkiem.
Jeżeli już jednak na pewno chcesz to zrobić to lepiej uczynić to wyrażeniem regularnym przed podaniem tekstu do parsera niżeli zmieniać jego zachowanie.


--------------------
Go to the top of the page
+Quote Post
corey1991
post 9.09.2012, 12:11:07
Post #185





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Witam, miałem okazję wykorzystać klasę i muszę powiedzieć, że na prawdę jest świetna! Tylko przy edycji filtra Youtube napotkałem mały problem. Minowicie zamiast wstawiania całego iframe poprzez dopisanie kodu w tym miejscu:
  1. $openNode['text'] = '<iframe title="YouTube video player" width="560" height="349"
  2. src="http://www.youtube.com/embed/'.$idMovie.'?rel=0" frameborder="0">
  3. </iframe>
  4. ';

zrobiłem coś takiego:
  1. public $tags = array(
  2. 'youtube' => array(
  3. 'open' => 'iframe',
  4. 'close' => 'iframe',
  5. 'notallowed_child' => 'all',
  6. 'parse_body' => 'checkMovie',
  7. 'hide_body_in_cut_text' => true,
  8. 'attributes' => array(
  9. 'width' => array(
  10. 'attr' => 'width',
  11. 'type' => 'number',
  12. 'default_value' => '457'
  13. ),
  14. 'height' => array(
  15. 'attr' => 'height',
  16. 'type' => 'number',
  17. 'default_value' => '329'
  18. ),
  19. )
  20. )
  21. );

tylko mam problem ze wstawieniem atrubutu src, bo po width i height zamyka mi tag iframe.

Na szybko rozwiązałem to obcinając ostatni znak poprzez substr(), ale to nie ładne rozwiązanie.
  1. $openNode['text'] = substr($openNode['text'],0,-1);
  2. $openNode['text'] .= ' src="http://www.youtube.com/embed/'.$idMovie.'" frameborder="0">';


I moje pytanie brzmi, jak to rozwiązać, żeby nie trzeba było nic obcinać, a src też dodawało jako atrybut?

Pozdrawiam!


--------------------
projektowanie stron internetowych
Go to the top of the page
+Quote Post
wookieb
post 9.09.2012, 19:32:26
Post #186





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Rozwiązanie jest OK. Wartość parametru jest generowana więc musi to być zrobione własnie w podany sposób.


--------------------
Go to the top of the page
+Quote Post
Zaszczyk
post 24.09.2012, 22:03:01
Post #187





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.08.2007

Ostrzeżenie: (0%)
-----


Chcę otrzymać zajawkę tekstu i używam takiego kodu:
  1. $bbcode->parse($forumr[2], false)->trustText = true;;
  2. $forum[$i][2] = $bbcode->cutText(120,false);//tresc postu


Jednakże, jak zrobić żeby klasa usuwała wszystkie tagi bbcode, tak żeby ani nie działałay ani nie były widoczne?
Go to the top of the page
+Quote Post
wookieb
post 24.09.2012, 22:10:05
Post #188





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie ma takiej możliwości.
Pobierz wersję HTML i usuń z niej tagi za pomocą na strip_tags


--------------------
Go to the top of the page
+Quote Post
Zajec
post 3.11.2012, 11:42:21
Post #189





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

Ostrzeżenie: (0%)
-----


  1. public function parseQuote($tag, $openNode, $body, &$closeNode, $settings) {
Zapomniałeś ampersanta przy $openNode. Z kolei $body niby nie edytujesz w tej funkcji, ale też przydałoby się dla spokoju dać & . Chwilę się głowiłem, czemu nie dostaję odpowiednich tagów wink.gif

wookieb: czy mógłbyś pomóc mi jeszcze z obsługą URL? Chodzi o to, że dwukrotnie adres przechodzi przez htmlspecialchars.

Kod:
  1. require_once 'include/BbCode/BbCode.class.php';
  2. $bbcode = new BbCode();
  3. $text='Test';
  4. echo $bbcode->parse($text, true);


Output:
Kod
Hello <a href="http://google.pl/test?foo=foo&amp;amp;bar=bar">Test</a> world


Jak widzisz, adres ma "&amp;amp;" i linki nie działają sad.gif
Go to the top of the page
+Quote Post
wookieb
post 3.11.2012, 18:39:39
Post #190





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




@Zajec - bardzo dziękuję za wykrycie buga - błąd został naprawiony smile.gif


--------------------
Go to the top of the page
+Quote Post
Zajec
post 3.11.2012, 19:00:33
Post #191





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

Ostrzeżenie: (0%)
-----


Dzięki serdeczne! Widzę też, że przesiadłeś się na filter_var w checkUrl. Jestem za, loklanie używałem podobnej modyfikacji.

Troszkę przeszkadzało mi, że filter_var nie akceptuje relatywnych linków, moja funckja wygląda więc następująco:
  1. public static function checkUrl($text)
  2. {
  3. $valid = filter_var($text, FILTER_VALIDATE_URL);
  4. if (!$valid)
  5. $valid = filter_var('http://php.net/' . $text, FILTER_VALIDATE_URL);
  6. if (!$valid)
  7. return false;
  8. return preg_replace('/(java script:)/is', '', $text);
  9. }
(Tak podaję, gdyby ktoś potrzebował konstrukcji typu
Kod
[url]/homepage[/url]
).

Dzięki za super projekt smile.gif

P.S.
Zmienna $inImg w parseUrl jest raczej zbędna, tylko raz jest ustawiana na true i zaraz po tym występuje instrucka "break".

Ten post edytował Zajec 3.11.2012, 18:57:10
Go to the top of the page
+Quote Post
wookieb
post 3.11.2012, 19:13:23
Post #192





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sztywne użycie php.net w checkUrl jest trochę... jednostronne, więc nie wprowadzam tego do kodu.
Co do $inImg - szczerze mówiąc zostawie tak jak jest dopóki działa. Bbcode 2.0 już niedługo więc nie będzie takich kwiatków smile.gif
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
Zaszczyk
post 8.11.2012, 18:41:12
Post #193





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.08.2007

Ostrzeżenie: (0%)
-----


Zastosowałem tą klasę na swoim małym forum żeby, działała funkcja cytuj i napisałem taki kod:

  1. $tresc = htmlspecialchars(mysql_real_escape_string($_POST['tresc']));
  2. $bbcode->getSettings()->trustText = false;
  3. $bbcode->parse($tresc,false);
  4. $tresc=$bbcode->getBbcode();


$tresc to tresc postu. Ale niestety funkcja cytuj nie działa prawidłowo np:

Cytat
mmmmmmmmmmmmmm[/qoute]


takie zapytanie wrzuca do bazy.

  1. 'quote' => array(
  2. 'open' => 'div class="quote"',
  3. 'close' => 'div',
  4. 'parse_body' => 'parseQuote',
  5. 'attributes' => array(
  6. 'quote' => array(
  7. 'type' => 'string'
  8. ),
  9. 'date' => array(
  10. 'type' => 'string'
  11. )
  12. )
  13. )


Dzięki za pomoc wink.gif


Go to the top of the page
+Quote Post
wookieb
post 8.11.2012, 18:55:05
Post #194





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Podaj proszę dokładną zawartość zmiennej $_POST['tresc'];
U mnie zwykły quote działa.


--------------------
Go to the top of the page
+Quote Post
Zaszczyk
post 8.11.2012, 19:27:24
Post #195





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.08.2007

Ostrzeżenie: (0%)
-----


  1. [qote]trolololo[/qote]
  2.  
  3. tutaj jest zwykly post


a do bazy wrzuca mi coś takiego:

  1. \[qote]
  2. trolololo
  3.  
  4.  
  5. tutaj jest zwykly post
  6. \[/qote]
  7. \[/qote]


literowka w [qote] celowa, bo forum nie chciało przepuścić.

Ten post edytował Zaszczyk 8.11.2012, 19:27:52
Go to the top of the page
+Quote Post
wookieb
post 8.11.2012, 20:04:25
Post #196





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tag zamykający quote był (jak domniemam) nieprawidłowy "[/qoute]" co powoduje, że bbcode sam zamknął tag po koniec tekstu gdyż nie było żadnego innego prawidłowego zamknięcia cytatu.
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
Zaszczyk
post 12.12.2012, 16:54:45
Post #197





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.08.2007

Ostrzeżenie: (0%)
-----


Mam problem z klasą, jak dodaje rekord do bazy to znaki specjalne takie jak ",&,< i > (możliwe też że inne) zamienia mi na &quot; &amp; itd. Da się ten problem rozwiązać za zmianą ustawień w klasie? Bo że używajac str_replace da się to zrobić to wiem
Go to the top of the page
+Quote Post
wookieb
post 12.12.2012, 17:19:47
Post #198





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




To domyślne zachowanie które zabezpiecza przed tym aby nie wyświetlać HTML-a. Nie da się tego wyłączyć.


--------------------
Go to the top of the page
+Quote Post
pionas
post 17.02.2013, 10:05:47
Post #199





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 25.03.2009
Skąd: Pionki

Ostrzeżenie: (0%)
-----


Cześć,

bardzo fajna klasa, niestety jednak dzisiaj ujrzałem jej błąd.

Nie mogę tu tego wkleić, ale jest coś takiego:
[url=
[b
[color = "Red"]

i zamknięcie tych tagów

Notice: Undefined index: URL in Bbcode/BbCode.php on line 841
Notice: Undefined index: COLOR in Bbcode/BbCode.php on line 841

Co jest nie tak?

Ten post edytował pionas 17.02.2013, 10:15:11


--------------------
Organizujesz konkurs? Chcesz coś wygrać? Wejdź na www.e-Konkursy.info :)
Go to the top of the page
+Quote Post
wookieb
post 17.02.2013, 10:28:54
Post #200





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ściągasz wersję bezpośrednio z githuba?
Po uruchomieniu skrawków przykładu bbcode, który dostarczyłeś nie otrzymuję żadnego błędu smile.gif

Jeżeli masz problem ze wstawieniem tegoż bbcode, użyj proszę gist.github.com


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 14:01