Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] BBCode
Forum PHP.pl > Forum > Przedszkole
Reiven
Witam,
zacząłem robić sobie własne bbcode, lecz mam problem przy znaczniku
  1. [/PHP]
  2.  
  3. [php]<?PHP
  4. function BBCode($tekst){
  5. // $tekst = nl2br($tekst);
  6. $tekst = htmlspecialchars($tekst);
  7. $tekst = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tekst);
  8. $tekst = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tekst);
  9. $tekst = preg_replace("#\[u\](.*?)\[/u\]#si",'<u>\\1</u>',$tekst);
  10. $tekst = preg_replace("#\[s\](.*?)\[/s\]#si",'<s>\\1</s>',$tekst);
  11. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" />',$tekst);
  12. $tekst = preg_replace("#\[url\](.*?)\[/url\]#si", "<A HREF=\"http://\\1\">\\1</A>", $tekst);
  13. $tekst = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si", "<A HREF=\"http://\\1\">\\2</A>", $tekst);
  14. $tekst = preg_replace("#\[quote\](.*?)\[/quote\]#si",'<blockquote class="cytat">\\1</blockquote>',$tekst);
  15. $tekst = preg_replace("#\[code\](.*?)\[/code\]#si",'<pre>\\1</pre>',$tekst);
  16. $tekst = preg_replace("#\[php\](.*?)\[/php\]#si", highlight_string('\\1', true),$tekst);
  17. return nl2br($tekst);
  18.  
  19. }
  20.  
  21. $s = "[php ]<?PHP echo 'test'; ?>[/php ]";
  22. echo BBCode($s);
  23.  
  24. #echo highlight_string(stripslashes("$s"), true);
  25.  
  26. ?>


nie chce mi to pokolorować składni :|
wookieb
preg_replace_callback
Reiven
tak mam zrobić:

  1. $tekst = preg_replace_callback('#\[php\](.*?)\[/php\]#si', highlight_string('\\1', true),$tekst);
questionmark.gif

wywala mi błąd ...
wookieb
A myślisz, że link do manuala podałem z nudów?

Masz dodatkowo http://pl2.php.net/preg_replace
I tam jest przykład u użyciu modyfikatora e
zegarek84
@Reiven - skorzystaj z funkcji podanych przez wookieb przy czym jeśli chodzi o bbcode dwuczłonowe (gdzie drugi człon jest taki sam tylko zamykający) podepnij pod to funkcję która rozpozna jakie to bbcode i zwróć wynik - wyrażenie regularne jakie możesz zastosować np.:
'#\[([^\]]+)\](.*?)\[/\\1\]#us'

do emoticonek skorzystaj z str_replace
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.