<?php
// ###################### Start bbcodeparse #######################
function bbcode($bbcode)
{

	$bbcode = str_replace('&lt;','&amp;lt;',$bbcode);
	$bbcode = str_replace('&gt;','&amp;gt;',$bbcode);
	$bbcode = str_replace('<','&lt;',$bbcode);
	$bbcode = str_replace('>','&gt;',$bbcode);
	$bbcode = nl2br($bbcode);

        $searcharray = array(
          "/(\[)(list)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/list)(((=)(\\4)([^\"']*)(\\4]))|(\]))/siU",
          "/(\[)(list)(])(.*)(\[\/list\])/siU",
          "/(\[\*\])/siU",
          "/(\[)(url)(=)(['\"]?)(www\.)([^\"']*)(\\4)(.*)(\[\/url\])/siU",
          "/(\[)(url)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/url\])/siU",
          "/(\[)(url)(])(www\.)([^\"]*)(\[\/url\])/siU",
          "/(\[)(url)(])([^\"]*)(\[\/url\])/siU",
          "/(\[)(b)(])(\r\n)*(.*)(\[\/b\])/siU",
          "/(\[)(u)(])(\r\n)*(.*)(\[\/u\])/siU",
          "/(\[)(i)(])(\r\n)*(.*)(\[\/i\])/siU",
          "/(\[)(php)(])(\r\n)*(.*)(\[\/php\])/siU",
          "/(\[)(code)(])(\r\n)*(.*)(\[\/code\])/siU",
          "/(\[)(pre)(])(\r\n)*(.*)(\[\/pre\])/siU",
          "/javascript:/si",
          "/about:/si"
        ); //'"

        $replacearray = array(
          "<ol type=\"\\5\">\\7</ol>",
          "<ul>\\4</ul>",
          "<li>",
          "<a href=\"http://www.\\6\" target=\"_blank\">\\8</a>",
          "<a href=\"\\5\" target=\"_blank\">\\7</a>",
          "<a href=\"http://www.\\5\" target=\"_blank\">\\5</a>",
          "<a href=\"\\4\" target=\"_blank\">\\4</a>",
          "<b>\\5</b>",
          "<u>\\5</u>",
          "<i>\\5</i>",
          "<blockquote><pre>c�digo:<hr noshade>\\5<hr noshade></pre></blockquote>",
          "<blockquote><pre>c�digo:<hr noshade>\\5<hr noshade></pre></blockquote>",
          "<pre>c�digo:\\5</pre>",
          "java script:",
          "about :"
        );

	$bbcode = preg_replace($searcharray, $replacearray, $bbcode);
	$bbcode = preg_replace("/(\[)(img)(])(\r\n)*([^\"]*)(\[\/img\])/siU", "<img src=\"\\5\" border=\"0\" alt=\"\">", $bbcode);
	//$bbcode = preg_replace("/(\[)(img)(])(\r\n)*([^\"]*)(\[\/img\])/siU", "<a href=\"\\5\" target=\"_blank\">\\5</a>", $bbcode);
	$bbcode = str_replace("\\'", "'", $bbcode);
	$bbcode = str_replace('<br />','<br>', $bbcode);
	
	$codebits = explode('<blockquote><pre>c�digo:<hr noshade>',$bbcode);
	list($key,$bbcode) = each($codebits);
	while (list($key,$val) = each($codebits))
	{
		$sbbits = explode('<hr noshade></pre></blockquote>',$val);
		$newbits = str_replace('<br>','', $sbbits[0]).'<hr noshade></pre></blockquote>'.$sbbits[1];
		$bbcode .= '<blockquote><pre>c�digo:<hr noshade>'.$newbits;
	}
	$codebits = explode('<pre>c�digo:',$bbcode);
	list($key,$bbcode) = each($codebits);
	while (list($key,$val) = each($codebits))
	{
		$sbbits = explode('</pre>',$val);
		$newbits = str_replace('<br>','', $sbbits[0]).'</pre>'.$sbbits[1];
		$bbcode .= '<pre>c�digo:'.$newbits;
	}
	return $bbcode;
}


// EXEMPLO
$texto = <<<EOF
[b]Ol�[/b], 
Este � [u]apenas um teste[/u] para mostrar [i]o que ele faz[/i] [url]http://www.dominio.com.br[/url]
[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN\">

<html>
<head>
	<title>t�tutlo</title>
</head>
<body>
texto texto texto texto texto texto texto 
</body>
</html>
[/code]
[list]
[*]asdf
[*]asdf
[*]asdf
[/list]
EOF;


echo bbcode($texto);
?>