<?php /** * @author @FATAL@ * @copyright 2008 */ class BBcode { private $BBarr = array( '#\[B\](.*?)\[/B\]#ixs' => '<b>$1</b>', '#\[IMG\](.*? \.jpg|.*? \.gif)\[/IMG\]#ixs' => '<img src="$1">', '#\[S\](.*?)\[/S\]#ixs' => '<s>$1</s>', '#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis' => '<a href="$1" target="_blank">$2</a>', '#\[LEFT\](.*?)\[/LEFT\]#xis' => '<div align="left">$1</div>', '#\[CENTER\](.*?)\[/CENTER\]#xis' => '<div align="center">$1</div>', '#\[RIGHT\](.*?)\[/RIGHT\]#xis' => '<div align="right">$1</div>', '#\[I\](.*?)\[/I\]#xis' => '<em>$1</em>' ); public function bbcod($BBcode) { $BBcode = htmlspecialchars($BBcode); foreach ($this->BBarr as $BB => $BBHTM) { if ($BB === '#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis') { if (preg_match('#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis', $BBcode, $pock)) { if ($pock['2'] === '') { $BBcode = preg_replace($BB, '<a href="$1" target="_blank">$1</a>', $BBcode); } } } $blank = ''; while ($BBcode !== $blank) { $blank = $BBcode; $BBcode = preg_replace($BB, $BBHTM, $BBcode); } } echo $BBcode; } } ?>
$str = "[i][b]Test[/b][/i]"; $bb = new BBcode; $bb->bbcod($str);