Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> BBcode, w bazie danych phpbb by przemo
Macok
post
Post #1





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

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


Mam problem z bbcode na mojej stronie.
Mam skrypt ktory wyswietla na stronie posty z forum.
Niestety wiekszosc tagow bbcode nie dziala poniewaz w bazie danych phpbb kazdy tag ma przypisany dziwny ciag znakow np. taki:
Kod
51dcb724e4.
Calosc wyglada np. tak:
Kod
[b:aef496628c]pogrubiony tekst[/b:aef496628c]
. Co zrobic zeby bbcode dzialal poprawnie?

____________________________________________________________________________

Widze ,ze nikt nie wie wiec zadam to pytanie w inny sposob.
Oto kod odpowiadajacy za dzialanie tagu "b" na stronie:
Kod
// bbcode
Function bbcode($str){

// usun zbedne
$str=htmlspecialchars(trim($str));

// Pogrubiony tekst
$str = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $str);

// kolejny wiersz
$str=nl2br($str);

// js
$str = preg_replace_callback("#\<(.*?)javascript(.*?)\>#si", "bbcode_js", $str);

// wynik
return $str;}



// anti js
Function bbcode_js($str){
if(!eregi('<a href=\"java script:mailto:mail\(\'',$str[0])){
return str_replace('javascript','java_script',$str[0]);
}else{return $str[0];}}
Co zmienic w tym kodzie zeby skrypt wzial pod uwage nie tylko
Kod
[b]tekst[/b]
ale takze
Kod
[b:51dcb724e4]tekst[/b:51dcb724e4]
?

Ten post edytował Macok 7.10.2006, 18:09:18
Go to the top of the page
+Quote Post
Luciano
post
Post #2





Grupa: Zarejestrowani
Postów: 102
Pomógł: 1
Dołączył: 26.07.2006
Skąd: Londyn

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


Z tego co sie dopatrzylem w tym kodzie znacznik jest wyluskiwany przez

  1. <?php
  2. $str = preg_replace("#[b](.*?)#si", "<b>1</b>", $str);
  3. ?>


Wyrazenie regularne \[b\] oczekuje tylko znacznikow [b] z niczym w srodku, tak wiec
nic dziwnego, ze nie reaguje na [b:costam]. Musisz je rozbudowac. Co wiecej, jako ze
prawdopodobnie nie wiesz co bedzie po : a musi sie to zamykac identycznym ciagiem
czyli [/b:costam] przydadza sie tzw. odwolania wsteczne. Jesli nie masz doswiadczenia z regexpem
to zapraszam na calkiem madra stronke :
http://grabun.com/wyrazenia-regularne/

napisana jest troche technicznym jezykiem ale jak przebolejesz to wszystko bedzie jasne smile.gif

Ten post edytował Luciano 10.10.2006, 09:49:10


--------------------
Go to the top of the page
+Quote Post
siemakuba
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


zeby zamienic coś takiego:
Cytat
[b:aef496628c]pogrubiony tekst [/b:aef496628c]

na coś takiego:
Kod
<b>pogrubiony tekst</b>

potrzebujesz coś takiego:
  1. <?php
  2. $bbcode = '[b:aef496628c]pogrubiony tekst [/b:aef496628c]';
  3. $bbcode = preg_replace('/[(b:[a-f0-9]{10})](.*?)[/1]/si', '<b>2</b>', $bbcode);
  4. ?>


pozdr.
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 Aktualny czas: 21.08.2025 - 01:58