Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kolejny problem z BBcodem., BBcode w bazie danych phpbb by przemo.
Macok
post 2.09.2006, 19:25:39
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Ledwo co udalo mi sie odpalic bbcode na mojej stronie i juz mam problem.
Bledy powodowane sa tym ze wiadomosci w ktorych wystepuje bbcode pobierane sa z bazy danych forum phpbb by przemo. Problem polega na tym ze niektore tagi bbcode w bazie danych phpbb by przemo maja przypisane jakies wartosci (cos w stylu id) i post w bazie danych nie wygldada np. tak: przyklad tylko tak: [b:e7c9e3e71f]przyklad[/b] i moja strona nie rozpoznaje tego jako tag bbcode sad.gif Co zrobic aby rozwiazac ten problem??
Go to the top of the page
+Quote Post
Mystic007
post 2.09.2006, 19:51:12
Post #2





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


Musisz dopisać wyrażenie regularne tak by pomijało ciąg występujący po dwukroptku. Jak nie możesz sobie z tym poradzić podaj kod.

Ten post edytował Mystic007 2.09.2006, 19:51:40
Go to the top of the page
+Quote Post
Macok
post 2.09.2006, 20:09:16
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Dzieki, oto kod: (a raczej czesc odpowiadajaca za bbcode)
  1. <?php 
  2. Function bbcode($zrodlo){
  3.  $zrodlo=trim($zrodlo);
  4.  $zrodlo=htmlspecialchars($zrodlo);
  5.  $zrodlo=preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  6.  $zrodlo=preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  7.  $zrodlo=preg_replace("#(.*?)#si", "<b>1</b>", $zrodlo);
  8. $zrodlo=preg_replace("#(.*?)#si", "<i>1</i>", $zrodlo);
  9. $zrodlo=preg_replace("#(.*?)#si", "<u>1</u>", $zrodlo);
  10. $zrodlo=preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  11. $zrodlo=preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  12. $zrodlo=preg_replace("#[p](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  13. $zrodlo=preg_replace("#
    (.*?)
    #si"
    , "<center>1</center>", $zrodlo);
  14. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  15. $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  16.  $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  17. $zrodlo=nl2br($zrodlo);
  18.  return $zrodlo;
  19. }
  20. ?>


Czy to wystarczy??

Ten post edytował Macok 2.09.2006, 20:10:30
Go to the top of the page
+Quote Post
Mystic007
post 2.09.2006, 20:16:31
Post #4





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


  1. <?php
  2. Function bbcode($zrodlo){
  3.  $zrodlo=trim($zrodlo);
  4.  $zrodlo=htmlspecialchars($zrodlo);
  5.  $zrodlo=preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  6.  $zrodlo=preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  7.  $zrodlo=preg_replace("#[b.{0,}](.*?)[/b]#si", "<b>1</b>", $zrodlo);
  8. $zrodlo=preg_replace("#[i.{0,}](.*?)[/i]#si", "<i>1</i>", $zrodlo);
  9. $zrodlo=preg_replace("#[u.{0,}](.*?)[/u]#si", "<u>1</u>", $zrodlo);
  10. $zrodlo=preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  11. $zrodlo=preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  12. $zrodlo=preg_replace("#[p](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  13. $zrodlo=preg_replace("#
    (.*?)
    #si"
    , "<center>1</center>", $zrodlo);
  14. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  15. $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  16.  $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  17. $zrodlo=nl2br($zrodlo);
  18.  return $zrodlo;
  19. }
  20. ?>


Powstawiałem to tylko w tagi B, U, I z tym ze [bs]text[/b] też zadziała. Napisz jeśli Ci to bardzo przeszkadza to może coś wykombinuję smile.gif Zależy czy zawsze będzie ten dwukropek a po nim ciąg znaków.

Ten post edytował Mystic007 2.09.2006, 20:19:17
Go to the top of the page
+Quote Post
Macok
post 2.09.2006, 21:27:48
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Dzieki!
Zaraz sprawdze jak dziala i dam edita! winksmiley.jpg

Niestety nie dziala.
Zamienialem po kolei wszystkie linijki i kiedy zamienilem ta:
  1. <?php
  2. $zrodlo=preg_replace("#[b.{0,}](.*?)[/b]#si", "<b>1</b>", $zrodlo);
  3. ?>


Przestalo dzialac. Zamiast tekst wyskakuje takie cos: [[/b]

Niewiem co jest nie tak. Wrzuce tu jeszcze raz dzialajacy kod
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?
  6. Function bbcode($zrodlo){
  7.  $zrodlo=trim($zrodlo);
  8.  $zrodlo=htmlspecialchars($zrodlo);
  9.  $zrodlo=preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  10.  $zrodlo=preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  11. $zrodlo=preg_replace("#(.*?)#si", "<b>1</b>", $zrodlo);
  12. $zrodlo=preg_replace("#(.*?)#si", "<i>1</i>", $zrodlo);
  13. $zrodlo=preg_replace("#(.*?)#si", "<u>1</u>", $zrodlo);
  14. $zrodlo=preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  15. $zrodlo=preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  16. $zrodlo=preg_replace("#[p](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  17. $zrodlo=preg_replace("#
    (.*?)
    #si"
    , "<center>1</center>", $zrodlo);
  18. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  19.  $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  20.  $zrodlo=preg_replace("#[img](.*?)[/img]#si", "<img src="1" border="0" alt="Obrazek" />", $zrodlo);
  21. $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  22. $zrodlo=nl2br($zrodlo);
  23.  return $zrodlo;
  24. }
  25. echo bbcode($_POST['kodzik']);
  26. ?>
  27. <? echo bbcode ('tekst') ?>
Kod powoduje wyswietlnie sie na stronie pogrubinego napisu tekst.
Przerobil bys mi powyzszy kod?? Byc moze ten ktory wrzucilem poprzednio byl uszkodzony!
Go to the top of the page
+Quote Post
Mystic007
post 2.09.2006, 21:30:44
Post #6





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


Gdzie są wstawiane te ciagi cyfr i liter? tylko do pogrubienia, pochylenia oraz do podkreślenia?

Ten post edytował Mystic007 2.09.2006, 21:41:48
Go to the top of the page
+Quote Post
Macok
post 2.09.2006, 21:38:06
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Chyba do wszystkich tagow oprocz odsylacza, ale to nie jest raczej powodem bledow bo testowalem tylko tag [b]
Probowalem tez napisac: [b:][/b:] ale tez nie dziala.
Byc moze powodem jest to ze pierwszy kod ktory ci podalem jest chyba uszkodzony.
Ale ty tu jestes expertem tongue.gif

Edit:
Zamienilem jeszcze linijke odpowiadajaca za [i] po czym przetestowalem. Wystepowal identyczny blad.
A na twoim kompie to dzialalo??

Ten post edytował Macok 2.09.2006, 21:42:46
Go to the top of the page
+Quote Post
Mystic007
post 2.09.2006, 21:42:30
Post #8





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


  1. <?php
  2. Function bbcode($zrodlo){
  3.  $zrodlo=trim($zrodlo);
  4.  $zrodlo=htmlspecialchars($zrodlo);
  5.  $zrodlo = preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  6.  $zrodlo = preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  7. $zrodlo=preg_replace("#[b.{0,}](.*?)[/b]#si", "<b>1</b>", $zrodlo);
  8. $zrodlo=preg_replace("#[i.{0,}](.*?)[/i]#si", "<i>1</i>", $zrodlo);
  9. $zrodlo=preg_replace("#[u.{0,}](.*?)[/u]#si", "<u>1</u>", $zrodlo);
  10. $zrodlo=preg_replace("#[smal.{0,}](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  11. $zrodlo=preg_replace("#[big.{0,}](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  12. $zrodlo=preg_replace("#[p.{0,}](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  13. $zrodlo=preg_replace("#[center.{0,}](.*?)[/center]#si", "<center>1</center>", $zrodlo);
  14. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  15.  $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  16.  $zrodlo=preg_replace("#[img.{0,}](.*?)[/img]#si", "<img src="1" border="0" alt="Obrazek" />", $zrodlo);
  17. $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  18. $zrodlo=nl2br($zrodlo);
  19.  return $zrodlo;
  20. }
  21. ?>

Był problem przy robieniu linków naprawiłem to. dodaj to: .{0,} gdzie pojawiają sie te ciągi. Działa u mnie. Na forum pojawiają sie slashe muszisz je usunać.

Ten post edytował Mystic007 2.09.2006, 21:44:43
Go to the top of the page
+Quote Post
Macok
post 2.09.2006, 21:47:23
Post #9





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Jak wpisuje tylko to co powiedziales to nic sie nie wyswietla.
A jak dodaje na koncu
  1. echo bbcode($_POST['kodzik']);
  2. ?>
  3. <? echo bbcode('[i:sfdsa]tekst[/i]') ?>
To wywala blad:
Kod
Warning: preg_replace() [function.preg-replace]: Compilation failed: unmatched parentheses at offset 19 in C:\XAMPP\xampp\htdocs\bbcode.php on line 21

Pewnie ja cos robie zle :/
Daje tu caly kod. Co jest w nim zle??
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. Function bbcode($zrodlo){
  7.  $zrodlo=trim($zrodlo);
  8.  $zrodlo=htmlspecialchars($zrodlo);
  9.  $zrodlo = preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  10.  $zrodlo = preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  11. $zrodlo=preg_replace("#[b.{0,}](.*?)[/b]#si", "<b>1</b>", $zrodlo);
  12. $zrodlo=preg_replace("#[i.{0,}](.*?)[/i]#si", "<i>1</i>", $zrodlo);
  13. $zrodlo=preg_replace("#[u.{0,}](.*?)[/u]#si", "<u>1</u>", $zrodlo);
  14. $zrodlo=preg_replace("#[smal.{0,}](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  15. $zrodlo=preg_replace("#[big.{0,}](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  16. $zrodlo=preg_replace("#[p.{0,}](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  17. $zrodlo=preg_replace("#[center.{0,}](.*?)[/center]#si", "<center>1</center>", $zrodlo);
  18. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  19.  $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  20.  $zrodlo=preg_replace("#[img.{0,}](.*?)[/img]#si", "<img src="1" border="0" alt="Obrazek" />", $zrodlo);
  21. $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  22. $zrodlo=nl2br($zrodlo);
  23.  return $zrodlo;
  24. }
  25.  
  26.  
  27. <? echo bbcode('[i:sfdsa]tekst[/i]') ?>


Ej moze dasz tu caly kod wraz z elementem ktory wyswietli jakis przykladowy tekst?? Wtedy sobie poradze bez problemu winksmiley.jpg

Ten post edytował Macok 2.09.2006, 21:57:26
Go to the top of the page
+Quote Post
Mystic007
post 2.09.2006, 22:06:39
Post #10





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


To mi działa na 100%, tobie też powinno winksmiley.jpg
  1. <?
  2. Function bbcode($zrodlo){
  3.  $zrodlo=trim($zrodlo);
  4.  $zrodlo=htmlspecialchars($zrodlo);
  5.  $zrodlo = preg_replace("#(.*?)?(.*?)#si", "<A HREF="12" TARGET="_blank">12</A>", $zrodlo);
  6.  $zrodlo = preg_replace("#(.*?)#si", "<A HREF="2" TARGET="_blank">3</A>", $zrodlo);
  7. $zrodlo=preg_replace("#[b.{0,}](.*?)[/b]#si", "<b>1</b>", $zrodlo);
  8. $zrodlo=preg_replace("#[i.{0,}](.*?)[/i]#si", "<i>1</i>", $zrodlo);
  9. $zrodlo=preg_replace("#[u.{0,}](.*?)[/u]#si", "<u>1</u>", $zrodlo);
  10. $zrodlo=preg_replace("#[small.{0,}](.*?)[/small]#si", "<small>1</small>", $zrodlo);
  11. $zrodlo=preg_replace("#[big.{0,}](.*?)[/big]#si", "<big>1</big>", $zrodlo);
  12. $zrodlo=preg_replace("#[p.{0,}](.*?)[/p]#si", "<p>1</p>", $zrodlo);
  13. $zrodlo=preg_replace("#[center.{0,}](.*?)[/center]#si", "<center>1</center>", $zrodlo);
  14. $zrodlo=preg_replace("#(.*?)#si", "<span style="color:2">3</span>", $zrodlo);
  15.  $zrodlo=preg_replace("#(.*?)#si", "<span style="font-size:2">3</span>", $zrodlo);
  16.  $zrodlo=preg_replace("#[img.{0,}](.*?)[/img]#si", "<img src="1" border="0" alt="Obrazek" />", $zrodlo);
  17. $zrodlo=preg_replace("#[hr=([0-9]{1,2}|100)]#si", "<hr class="linia" width="1%">", $zrodlo);
  18. $zrodlo=nl2br($zrodlo);
  19.  return $zrodlo;
  20. }
  21. echo bbcode($_POST['kodzik']);
  22. ?>
  23. <? echo bbcode ('tekst') ?>
  24. <? echo bbcode ('[u:Asa234s]tekst[/u]') ?>
  25. <? echo bbcode ('tekst') ?>
  26. <? echo bbcode ('[i:Asa234s]tekst[/i]') ?>
  27. <? echo bbcode ('tekst') ?>
  28. <? echo bbcode ('[b:Asa234s]tekst[/b]') ?>


Ten post edytował Mystic007 2.09.2006, 22:08:41
Go to the top of the page
+Quote Post
Macok
post 3.09.2006, 20:12:43
Post #11





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

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


Ten kod powyzej nie dzialal wiec zrobilem tak jak mowiles. Tam gdzie sa te ciagi znakow wkleilem : .{0,}.
Zadzialalo ale z dziwnymi bledami. Np. jak wklejam kod w ktorym jest duzo tagow bbcode to wyswietla sie zalozmy tylko 1 z nich a tekst i reszta tagow juz nie sad.gif oto caly kod. Jest cos w nim nie tak?? powinien chyba dzialac :/
  1. <?php
  2.  
  3. // bbcode
  4. Function bbcode($str){
  5.  
  6. // usun zbedne
  7. $str=htmlspecialchars(trim($str));
  8.  
  9. // Obrazek
  10. $str = preg_replace("#[img.{0,}](.*?)[/img.{0,}]#si", "<img src="1" border="0" alt="Obrazek" />", $str);
  11.  
  12. // Pogrubiony tekst
  13. $str = preg_replace("#[b.{0,}](.*?)[/b.{0,}]#si", "<b>1</b>", $str);
  14.  
  15. // Pochylony tekst
  16. $str = preg_replace("#[i.{0,}](.*?)[/i.{0,}]#si", "<i>1</i>", $str);
  17.  
  18. // Podkreślony tekst
  19. $str = preg_replace("#[u.{0,}](.*?)[/u.{0,}]#si", "<u>1</u>", $str);
  20.  
  21. // kolejny wiersz
  22. $str=nl2br($str);
  23.  
  24. // js
  25. $str = preg_replace_callback("#<(.*?)javascript(.*?)>#si", "bbcode_js", $str);
  26.  
  27. // wynik
  28. return $str;}
  29.  
  30.  
  31.  
  32. // anti js
  33. Function bbcode_js($str){
  34. if(!eregi('<a href="java script:mailto:mail('',$str[0])){
  35. return str_replace('javascript','java_script',$str[0]);
  36. }else{return $str[0];}}
  37.  
  38.  
  39. ?>
Go to the top of the page
+Quote Post

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: 12.07.2025 - 18:54