Bueno estaba intentando implementar los bbcode pero a la hora de hacer lo de la etiqueta "code" me hago un desastre porque si ponen dentro de la etiqueta "code" la etiqueta de letra negrita "b" se pone negrita el código dentro de la etiqueta "code" igual con los links y demas... y eso no es bueno xD. Aca les dejo el codigo que uso:
<?php
function bbcode($str){
$str = nl2br($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', '<img src="$1" border="0" />', $str);
$str = preg_replace('#\[code\](.*)\[/code\]#ise', '\'<b>Código:</b><br /><div class="codigo">\'.highlight_string(stripslashes(str_replace(\'<br />\', \'\', \'$1\')), true).\'</div>\'', $str);
return $str;
}
?>
Podrías intentar eliminar todas las etiquetas "b" y demás dentro de tu etiqueta "code". Haz un WHILE y verifica que dentro de "code" no haya ninguna otra etiqueta. Al menos eso se me ocurre a mi.
Pero si te fijas en el bbcode del foro si tu colocas la etiqueta "b" dentro de la etiqueta "code" no la elimina simplemente no se pone la letra en negrita.
Hum...en ese caso, qué te parece buscar una etiqueta de apertura, buscar su etiqueta de cierre e ignorar todas las etiquetas dentro de dicha etiqueta?
Dejame probar y te cuento :P gracias.
EDIT:
Solucione el problema pero ahora se me presenta otro problema fijense
$str = preg_replace('#\[code\](.*)\[/code\]#ise', '\'<b>Código:</b><br /><div class="codigo">\'.codeclear(\'$1\').\'</div>\'', $str);
Ok ahora el problema viene si uso 2 veces la etiqueta [ code ] fijense lo que pasa ejemplo:
[ code ]
dasdasdasdasdasdasdas
[ /code ]
[ code ]
dasdasdasdasdasdasdas
[ /code ]
Me deberia mostrar dos divs con los codigos pero sem ete todo en un solo div y queda asi:
dasdasdasdasdasdasdas
[ /code ]
[ code ]
dasdasdasdasdasdasdas
No se si me explique bien :xD pero espero que me puedan ayudar :P