Mam formularz, w którym mam <textarea> tam wpisuje sobie jakąś treść. Skrypt dodaje do bazy to co jest w textarea i później wyświetla. Czyli zwykły formularz. Teraz chciałbym dopisać do tego BBCode. Tagi [ b ] i inne zrobiłem. Problem pojawił się jak przyszło mi robić tag [ PHP ]. Chciałbym, że tekst pomiędzy [ PHP ] a [ / PHP ] był kolorowany, a linie numerowane. Z pomocą przyszło mi Geshi.

  1. public function phpBB($source) {
  2. include_once './libs/geshi/geshi.php';
  3. $language = 'php';
  4. $source = htmlspecialchars_decode($source);
  5. $geshi = new GeSHi($source, $language);
  6. $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
  7. $geshi->set_overall_style('font-size: 90%; color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true);
  8. $geshi->set_line_style('font: normal normal 95% "Courier New", Courier, monospace; color: #003030;', 'font: bold normal 95% "Courier New",
  9. Courier, monospace; color: #006060;', true);
  10. return $geshi->parse_code();
  11. }


a tak dodaje do bazy:

  1. $post = $this->protect($_POST['threadreply-post']);
  2. $post = $bbcode->vBBCode($post);
  3. $post = $bbcode->vBBCode($post);


i ok wszystko działa, ale jak w textarea dam coś takiego:

  1. [ php ] <?php echo $cos; ?> [ /php ]
  2. Tutaj zwykły tekst

metoda w której sobie zamieniam
  1. public function vBBCode($string) {
  2. $string = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$string);
  3. $string = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$string);
  4. $string = preg_replace("#\[php\](.*?)\[/php\]#si",'\\1',$string);
  5. return $string;
  6. }


To "tutaj zwykły tekst" wyświetla mi się tak jakby był w tagach PHP...

Siedze nad tym już prawie 5h...