<?php 
/*
	BBCode Parser 

	Vers�o do modificada do BBCode Parser por:
		Higor Euripedes ( heuripedes@hotmail.com )


	- parametros obrigat�rios:
		(string) bbcode = Texto para ser compilado;

	- parametros opcionais:
		(boolean) all_to_entities = Converter (TRUE) ou n�o (FALSE) caracteres
		                            especiais para entidades HTML;

		(string)  code_str        = Palavra para indicar o c�digo;

		(string)  code_bgcolor    = Cor de fundo para o c�digo;

		(string)  quote_str       = Palavra para indicar a cita��o;

	Uso:
		bbcode ( string bbcode [, bool all_to_entities, string code_str, string code_bgcolor, string quote_str] )
	
*/
function bbcode ( $bbcode, $all_to_entities = FALSE, $code_str = 'code', $code_bgcolor = '', $quote_str = 'quote' ) 
{ 
	$quote_str = trim( $quote_str );
	$code_str = trim( $code_str );
	$code_bgcolor = trim( $code_bgcolor );
	
	if ( $all_to_entities == TRUE || $all_to_entities == 1)
	{
		$bbcode = htmlentities( $bbcode );
		$bbcode = nl2br( $bbcode );
	}
	elseif ( $all_to_entities == FALSE || $all_to_entities == ''  || $all_to_entities == 0 )
	{
		$bbcode = htmlspecialchars( $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', 
		'/(\[)(quote)(])(\r\n)*(.*)(\[\/quote\])/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>'. $code_str . '<hr noshade><FONT style="background-color:' . $code_bgcolor .
			';Width:100%">\\5</FONT><hr noshade></pre></blockquote>', 
		'<blockquote><pre>'. $code_str . '<hr noshade><FONT style="background-color:' . $code_bgcolor .
			';Width:100%">\\5</FONT><hr noshade></pre></blockquote>', 
		'<pre>' . $code_str . ':\\5</pre>', 
		'<br><blockquote>' . $quote_str . ':<br><q style="border-width: 1px; '.
			'border-style:solid;width:100%;height:100%"><br>\\5 <br></q></blockquote><br>', 
		'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 = str_replace( '\\\'', '\'', $bbcode ); 
    $bbcode = str_replace( '<br />', '<br>', $bbcode); 
     
    $codebits = explode( '<blockquote><pre>'. $code_str . ':<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>'. $code_str . ':<hr noshade>' . $newbits; 
    } 

    $codebits = explode( '<pre>'. $code_str . ':', $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>'. $code_str . ':' . $newbits; 
    }
	
    return $bbcode; 
}

// EXEMPLO 
$texto = '[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]; ';

echo bbcode($texto,FALSE,'C�digo','GRAY','Cita��o'); 

?>