Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

12 Stron V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> [klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser
slewin
post 28.05.2009, 15:11:32
Post #21





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

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


dzięki , już łapie o co chodzi winksmiley.jpg .
Będę się musiał trochę pomęczyć z tym bo przykładowy filmik ma taki oto god
Kod
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/hmcS8EyI0RQ&hl=pl&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/hmcS8EyI0RQ&hl=pl&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>


jak widać link do filmu jest w dwóch miejscach przy value oraz src ;/ . hmm myślę że przyjrzę się dokładnie filtrowi url i coś wykombinuje ;] .
pozdrawiam
Go to the top of the page
+Quote Post
wookieb
post 28.05.2009, 15:12:43
Post #22





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




Wiec ten kod wstawiasz w miejsce
Kod
tutaj wpisujemy kod odpowiadajacy za wyswietlenie filmiku youtube

A url masz w $str.

Ten post edytował wookieb 28.05.2009, 15:13:07


--------------------
Go to the top of the page
+Quote Post
slewin
post 28.05.2009, 15:37:29
Post #23





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

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


Tak zrobiłem wcześniej ,ale nie było widać odtwarzacza , po kliknieciu prawym klawiszem myszy na miejsce gdzie powinnien być wyskakuje opis " film niewczytany..." a źródło wygląda tak
Kod
<object width="560" height="340">
<param name="movie" value="http://www.youtube.com/watch?v=TbSNHrSwm9M">
<param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always">
<embed src="http://www.youtube.com/watch?v=TbSNHrSwm9M" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></object>
http://www.youtube.com/watch?v=TbSNHrSwm9M

jak widać wywala znacznik </embed> , nie wiem czemu .
Go to the top of the page
+Quote Post
wookieb
post 28.05.2009, 18:40:55
Post #24





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




Zacznijmy od tego, że raczej coś źle zrobiłeś bo mi nic nie ucinało.

Podsyłam cały filtr. Przyda się dla potomnych.
  1. <?php
  2. class bbcode_filter_youtube
  3. {
  4.  
  5.   public $tags = array(
  6.       'youtube'=>array(
  7.           'open'    =>    'youtube', // tak naprawde moze byc tutaj cokolwiek bo i tak potem to wywalimy
  8.           'close'    =>    'youtube',
  9.           'notallowed_childs'=>    'all', // zadnych innych tagow w srodku nie potrzebujemy
  10.           'parseBody'    =>    'checkMovie'
  11.       )
  12.   );
  13.  
  14.   //$tag - wszystkie informacje o tagu. W naszym przypadku to co powyzej
  15.   // $openNode - tag otwierajacy
  16.   // $body - lista elementow zawartych pomiedzy tagami
  17.   // $closeNode - tag zamykajacy
  18.    public function checkMovie($tag, &$openNode, &$body, &$closeNode)
  19.    {        
  20.        // wyciagamy caly tekst
  21.        $bodyStr='';
  22.        foreach($body as &$el)
  23.        {
  24.            $bodyStr.=$el['text'];
  25.            
  26.            // wersja do wyswietlenia
  27.            $el['text']='';
  28.        }
  29.      
  30.        // sprawdzamy czy ciag jest urlem
  31.        $str=data_validator::checkUrl($bodyStr);
  32.      
  33.        if($str==false)
  34.        {
  35.            $openNode=bb_code::removeNode($openNode);
  36.            $closeNode=bb_code::removeNode($closeNode);
  37.            return false;
  38.        }
  39.        
  40.        
  41.        // szukanie id filmu
  42.        if(preg_match('/watch?v=([a-zA-Z0-9_]+)/i', $str, $matches))
  43.        {
  44.            $idMovie=$matches[1];
  45.        }
  46.        else
  47.        {
  48.            $openNode=bb_code::removeNode($openNode);
  49.            $closeNode=bb_code::removeNode($closeNode);
  50.            return false;
  51.        }
  52.      
  53.        // zamkniecie nie jest nam potrzebne
  54.        $closeNode['text']='';
  55.        
  56.        // Ustawiamy content
  57.        $openNode['text']='<object width="425" height="344">
  58.    <param name="movie" value="http://www.youtube.com/v/'.$idMovie.'"></param>
  59.    <param name="allowFullScreen" value="true"></param>
  60.    <param name="allowscriptaccess" value="always"></param>
  61.    <embed src="http://www.youtube.com/v/'.$idMovie.'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed>
  62. </object>';
  63.      
  64.       //ustawiamy link dla zaufanego bbcode
  65.       reset($body);
  66.       $body[key($body)]['tagText']=$str;
  67.   }
  68. }
  69. ?>


--------------------
Go to the top of the page
+Quote Post
Fixer
post 30.05.2009, 12:41:38
Post #25





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

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


może się przyda:) http://hobix.com/textile/quick.html


--------------------
Go to the top of the page
+Quote Post
Fafu
post 23.06.2009, 23:21:59
Post #26





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

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


Witam!
http://wookieb.pl/bbcode/cut_test.php - ten przykład nie działa poprawnie.
Chciałbym się dowiedzieć gdzie można wyłączyć automatyczne zamienianie & na &amp; ponieważ używam klasy convert charset i tam polskie litery są zapisywane do bazy w takim stylu: & #380 ; (bez spacji) i przy tej klasie bbcode zamiast litery pokazują się te znaki.
pozdrawiam

Ten post edytował Fafu 23.06.2009, 23:51:20


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
wookieb
post 24.06.2009, 09:20:51
Post #27





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




Oczywiście masz rację.
Poprawiłem cut_test.php wraz z małym bugiem który znalazłem.

Jeżeli chodzi o twój problem to używam funkcji htmlspecialchars to zabezpieczenia przez wstrzykaniem htmla, możesz ją zamienić na następującą funkcje
  1. <?php
  2. $text=str_replace(array('<', '>'), array('&lt;', '&gt;'), $text);
  3. ?>

Aktualne miejsca w których trzeba to zastąpić to linia 826
  1. <?php
  2. else $str=htmlspecialchars($str);
  3. ?>

Linia 1077:
  1. <?php
  2. $it=htmlspecialchars($node['text']);
  3. ?>


Oczywiście w niektórych filtrach również występuje htmlspecialchars wiec wystarczy ze je przeszukasz i bedzie po kłopocie.
Szczerze mówiąc trochę nie rozumiem używania encji do kodowania polskich znaków, no ale jak tak robisz.

Ten post edytował wookieb 24.06.2009, 09:50:17


--------------------
Go to the top of the page
+Quote Post
Fafu
post 24.06.2009, 12:00:29
Post #28





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

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


Dzięki za odpowiedź, czy żeby u mnie działało wycinanie tekstu muszę pobrać paczkę od nowa? (czy aktualizowałeś coś?).

Używam encji żeby nie było problemów z kodowaniem np. przy przenoszeniu bazy danych winksmiley.jpg


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
wookieb
post 24.06.2009, 12:04:21
Post #29





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




Tak aktualizowałem, pobierz nową paczkę smile.gif


--------------------
Go to the top of the page
+Quote Post
Fafu
post 24.06.2009, 12:13:31
Post #30





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

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


No niestety nadal coś nie działa...
wyświetla się:
Kod
[/Array][/Array][/Array][/Array]

oraz dużo błędów typu:
Kod
Warning: Illegal offset type in C:\Program Files\WebServ\httpd\forum\bbcode\bbcode.class.php on line 488


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
wookieb
post 24.06.2009, 12:27:49
Post #31





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




Sprawdź czy aby napewno poprawnie ściągnąłeś nowe pliki.
Poprawiłem jeszcze błąd z call_time_pass_reference.

Jak widzisz na serwerze działa wszystko ok, poza tym jest całkiem nowy cut_test.php
http://wookieb.pl/bbcode/cut_test.php


--------------------
Go to the top of the page
+Quote Post
Fafu
post 24.06.2009, 12:37:06
Post #32





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

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


No niestety, ściągałem kilka razy i nic. Ciągle te same błędy.

EDIT: już działa winksmiley.jpg chodziło o cache przeglądarki - pobierało mi poprzedni plik.
pozdrawiam

Ten post edytował Fafu 24.06.2009, 13:07:42


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
slewin
post 27.06.2009, 11:09:49
Post #33





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

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


a ja mam mały problem bo nie wiem jak stosować znacznik <img> zdjęcia ? mam np. taki oto kod
Kod
<img src="http://www.nazwawww.pl/www/yyy/xxx/zzz/fotak.jpg" border="0" height="100" width="100" alt="">

jak go zamienić by działał poprawnie questionmark.gif
Go to the top of the page
+Quote Post
wookieb
post 27.06.2009, 12:40:44
Post #34





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




Nawet nie wiesz co to bbcode :/
http://bbcode.org/reference.php


--------------------
Go to the top of the page
+Quote Post
mowgli91
post 8.07.2009, 16:03:37
Post #35





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.12.2008
Skąd: Szamotuły, Poznań

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


Kurczę, nie mogę ogarnąć jednej rzeczy - chciałbym dodać znacznik [flash={szerokosc},{wysokość}]{url_obiektu_flash}[/flash] i nie mam pojęcia jak się za to zabrać ;/


--------------------
Zapraszam na www.redtube.com
Go to the top of the page
+Quote Post
MajareQ
post 22.09.2009, 16:24:20
Post #36





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Ja mam pytanko z całkiem innej sceny. Jaka jest licencja na używanie tej klasy?
Go to the top of the page
+Quote Post
wookieb
post 22.09.2009, 17:19:50
Post #37





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




Do własnego jak i komercyjnego użytku.
Nie znam się specjalnie na licencjach więc niech będzie BSD


--------------------
Go to the top of the page
+Quote Post
lysiu
post 23.09.2009, 00:10:14
Post #38





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 22.09.2009
Skąd: śląsk

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


U mnie śmiga, że hej!

Narazie poprawiłem jeden błąd:


błędnie: (bbcode/filter/youtube.php)
  1. $openNode['text']='<object width="425" height="344">
  2. <param name="movie" value="http://www.youtube.com/v/'.$idMovie.'"></param>
  3. <param name="allowFullScreen" value="true"></param>
  4. <param name="allowscriptaccess" value="always"></param>
  5. <embed src="http://www.youtube.com/v/'.$idMovie.'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed>
  6. </object>';


prawidłowo: (bbcode/filter/youtube.php)
  1. $openNode['text']='<object type="application/x-shockwave-flash" style="width:425px; height:350px;" data="http://www.youtube.com/v/'.$idMovie.'"><param name="movie" value="http://www.youtube.com/v/'.$idMovie.'" /></object>';


a jeszcze kilka jest, później popoprawiam.

a tu (jak chcecie!) możecie zobaczyć jak to u mnie se śmiga:

(spoiler:)

Księga Gości!


biggrin.gif jak dla mnie bomba! Wielkie dzięki za ten skrypt, samemu by mi się chyba nie chciało sad.gif

edit: coś wam (forum) "spoiler" w bbcode cienko działa snitch.gif

Ten post edytował lysiu 23.09.2009, 00:59:34


--------------------
moje wypociny
Go to the top of the page
+Quote Post
MajareQ
post 23.09.2009, 09:38:23
Post #39





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Cytat(wookieb @ 22.09.2009, 18:19:50 ) *
Do własnego jak i komercyjnego użytku.
Nie znam się specjalnie na licencjach więc niech będzie BSD


Gwoli ścisłości - mogę używać w projekcie, który tworzę na zlecenie?
Go to the top of the page
+Quote Post
wookieb
post 23.09.2009, 09:39:59
Post #40





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




Tak


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

12 Stron V  < 1 2 3 4 > » 
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 - 19:41