Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Najlepszy parser bbcode ?
konrados
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Witam,

Próbuję coś znaleźć w googlu ale tego jest za dużo - chodzi mi o parser bbclode, byle by po prostu rozumiał takie rzeczy jak np.
CODE
[img]
, jaki byście proponowali?

w php.net ( http://pl2.php.net/bbcode ) znalazłem niby odpowiednie funkcje, ale coś trzeba instalować a ja nie mam takiej możliwości.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


  1. <?php
  2. public static function replace($tekst = '')
  3.    {
  4.        $tekst = preg_replace("#(.*?)#si",'<strong>$1</strong>',$tekst);
  5.        $tekst = preg_replace("#(.*?)#si",'<i>$1</i>',$tekst);
  6.        $tekst = preg_replace("#(.*?)#si",'<span class="podkreslony">$1</span>',$tekst);
  7.        $tekst = preg_replace("#[strong](.*?)[/strong]#si",'<strong>$1</strong>',$tekst);
  8.        $tekst = preg_replace("#[img](.*?)[/img]#si",'<img src="$1" alt="$1" title="$1" />',$tekst);
  9.        $tekst = preg_replace("#[img=(.*?)](.*?)[/img]#si",'<img src="$1" alt="$2" title="$2" />',$tekst);
  10.        $tekst = preg_replace("#[quote](.*?)[/quote]#si",'<span class="cytat">$1</span>',$tekst);
  11.        $tekst = preg_replace("#[code](.*?)[/code]#si",'<span class="kod">$1</span>',$tekst);
  12.        
  13.        return $tekst;
  14.    }
  15. ?>
Go to the top of the page
+Quote Post
konrados
post
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


O, działa! Spodziewałem się czegoś bardziej skomplikowanego. Dzięki!

Za nadto się pośpieszyłem... w moim skrypcie zamieniam również wszystko to co wygląda na link na a href=http://link i przez to bbcode IMG nie działa prawidłowo, bo też przecież zawiera link.

Istnieje jakieś proste rozwiązanie na to? Np. jakieś regular expression które zamienia wszystko co wyglada na link chyba, że znajduje się w tagach IMG ?
Go to the top of the page
+Quote Post
AxZx
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


tak, istnieje.
najpierw tekst obrabiasz funkcją do bbcode, później do autolink.

autolink może wyglądać tak (źródło: Symfony):
  1. <?php
  2. function _auto_link_urls($text, $href_options = array())
  3. {
  4.  $href_options = _tag_options($href_options);
  5.    SF_AUTO_LINK_RE,
  6.    create_function('$matches', '
  7.      if (preg_match("/<as/i", $matches[1]))
  8.      {
  9.        return $matches[0];
  10.      }
  11.      else
  12.      {
  13.        return $matches[1].'<a href="'.($matches[2] == "www." ? "http://www." : $matches[2]).$matches[3].'"'.$href_options.'>'.$matches[2].$matches[3].'</a>'.$matches[4];
  14.      }
  15.    ')
  16.  , $text);
  17. }
  18. ?>
Go to the top of the page
+Quote Post
konrados
post
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Dzięki.
Go to the top of the page
+Quote Post
seba22
post
Post #6





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Nie chciał bym tworzyć nowego tematu, i dostać po uszach, więc dopisuje się tutaj.

Mam sobie taki praserek, tak to nazwijmy, po imieniu, taka zabawka, namiastka ;P

  1. <?php
  2. function bbcode($text)
  3. {
  4. $search = array (
  5.           '#(.*?)#si',
  6.           '#(.*?)#si',
  7.           '#(.*?)#si',
  8.    '#
    (.*?)
    #si'
    ,
  9. '#(.*?)#si',
  10. '#[img](.*?)[/img]#si',
  11.  
  12.       );
  13.       $replace = array(
  14.           '<b>1</b>',
  15.           '<i>1</i>',
  16.           '<u>1</u>',
  17.  '<center>1</center>',
  18. '<a  href="1"></a>',
  19. '<img src="1">',
  20.       );
  21.       $message=$text;
  22.       $message = preg_replace($search, $replace, $message);
  23.  
  24.  
  25. // zamiana TAG lini na  BR
  26. $str     = "$message";
  27. $order   = array("[br]");
  28. $replace = '<br>';
  29. // Processes r\n's first so they aren't converted twice.
  30. $newstr = str_replace($order, $replace, $str);
  31. $message=$newstr;
  32. // zamiana TAG lini na  BR
  33.  
  34.  
  35. return $message;
  36. }
  37. // bbcode / experimental
  38. ?>



I chciał bym dorobić tam coś takiego:

  1. <?php
  2. [url=http://www.bankfotek.pl/view/164595](IMG:http://www.bankfotek.pl/thumb/164595.jpeg) [/url]
  3. ?>


Czy jest jakiś pomysł, aby dorobić tutaj obsługę, miniaturki będącej odnośnikiem ?

Mam na myśli jakąś łatwą wersję, która nie rozwali mi całkowicie środowiska (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

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 Aktualny czas: 5.10.2025 - 03:21