Cita de: naderST en 14 Agosto 2008, 03:34 AM
Buenas estoy haciendo una funcion para implementar bbcode, esto es lo que llevo:Código (php) [Seleccionar]
<?php
function bbcode($str){
$str = htmlentities($str);
$str = str_replace("<", "<", $str);
$str = str_replace(">", ">", $str);
$str = preg_replace('/\[b\](.*?)\[\/b\]/is', '<b>$1</b>', $str);
$str = preg_replace('/\[i\](.*?)\[\/i\]/is', '<i>$1</i>', $str);
$str = preg_replace('/\[u\](.*?)\[\/u\]/is', '<u>$1</u>', $str);
$str = preg_replace('/\[url\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$1</a>', $str);
$str = preg_replace('/\[url\=(.*?)\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$2</a>', $str);
$str = preg_replace('/\[img\](.*?)\[\/img\]/is', '<div id="imagen"><img src="$1" border="0" /></div>', $str);
$str = preg_replace('/\[quote\=(.*?)\](.*?)\[\/quote\]/is', '<b>$1 dijo:</b><br /><div id="codigo"><code>$2</code></div>', $str);
$str = preg_replace('/\[color\=(.*?)\](.*?)\[\/color\]/is', '<span style="color:$1">$2</span>', $str);
$str = preg_replace('/\[size\=(.*?)\](.*?)\[\/size\]/is', '<font size="$1">$2</font>', $str);
$str = preg_replace('/\[list\](.*?)\[\/list\]/is', '<ul>$1</ul>', $str);
$str = preg_replace('/\[li\](.*?)\[\/li\]/is', '<li>$1</li>', $str);
$str = str_replace("<ul><br />", "<ul>", $str);
$str = str_replace("</li><br />", "</li>", $str);
$str = preg_replace('/\[code\](.*?)\[\/code\]/is', '<b>Código:</b><br /><div id="codigo"><code>$1</code></div>', $str);
$str = nl2br($str);
return $str;
}
?>
Cambia el orden como vas haciendo tu BBCode, primero pon el preg_replace() de la estiqueda de CODE, y cuando la insetes en el STR insertala asi: htmlentities( $1, ENT_QUOTES ); y listo....
La cuestion es en la etiqueta code quiero que si se pone dentro de ella la etiqueta [ b ] no se ponga en negrita ni nada, no se si me explico.
Gracias.