bueno, hace semanas que intento esto y no encontré una solución simple y razonable.. así que inventé mi propio sistema de tags..
Código PHP:
<?
// tomamos el contenido vía POST de un formulario:
// escapamos los caraceres especiales (\ y ")
// eliminamos los tags HTML
// finalmente traducimos todos los caracteres a su equivalente HTML
$sec_te2 = htmlentities(strip_tags(mysql_real_escape_string($_POST['sec_te2'])));
// definimos nuestros tags
$sec_te2 = str_replace("[", "<", $sec_te2);
$sec_te2 = str_replace("]", ">", $sec_te2);
$sec_te2 = str_replace("|", "\"", $sec_te2);
?>
ahora bien, cada vez que deseamos insertar en un texto alguna imagen o letra negrita, usamos su código en html pero reemplazando < x [, > x] y " x |
aunque cada uno podría establecer su propio estandar =)
espero que les sea útil