Haber lo que puedes hacer es usar
BEBECode un Javascript que cambia un Textarea, por un Textarea mas completo con los botones clasicos Negrita,Cursiva,etc ...
Lo que hace es crear codigo bbcode ( el tipico [ b ] , [ i ] [ img ] , etc ... ).
Entones lo que mandas es Texto con bbcode, esto lo guardas en tu tabla, luego cuando quieras mostrar este texto, tienes que aplicar alguna funcion que transforme el bbcode a tags html.
Código PHP:
function bbcode($texto) {
$texto = nl2br($texto);
$texto = str_replace("]\n", "]", $texto);
$simple_search = array(
'/\[b\](.*?)\[\/b\]/is',
'/\[i\](.*?)\[\/i\]/is',
'/\[u\](.*?)\[\/u\]/is',
'/\[url\=(.*?)\](.*?)\[\/url\]/is',
'/\[url\](.*?)\[\/url\]/is',
'/\[blank\=(.*?)\](.*?)\[\/blank\]/is',
'/\[blank\](.*?)\[\/blank\]/is',
'/\[align\=(left|center|right)\](.*?)\[\/align\]/is',
'/\[img\](.*?)\[\/img\]/is',
'/\[mail\=(.*?)\](.*?)\[\/mail\]/is',
'/\[mail\](.*?)\[\/mail\]/is',
'/\[font\=(.*?)\](.*?)\[\/font\]/is',
'/\[size\=(.*?)\](.*?)\[\/size\]/is',
'/\[color\=(.*?)\](.*?)\[\/color\]/is',
'#\[php\](.*?)\[\/php\]#se'
);
$simple_replace = array(
'<strong>$1</strong>',
'<em>$1</em>',
'<u>$1</u>',
'<a href="$1">$2</a>',
'<a href="$1">$1</a>',
'<a href="$1" target=\"_blank\">$2</a>',
'<a href="$1" target=\"_blank\">$1</a>',
'<div style="text-align: $1;">$2</div>',
'<img src="$1" alt="$1" />',
'<a href="mailto:$1">$2</a>',
'<a href="mailto:$1">$1</a>',
'<span style="font-family: $1;">$2</span>',
'<span style="font-size: $1;">$2</span>',
'<span style="color: $1;">$2</span>',
"highlight_string(stripslashes(html_entity_decode(str_replace('<br />','','$1'))), true)"
);
// Aplicar el BBCode
$texto = preg_replace ($simple_search, $simple_replace, $texto);
return $texto;
}
De esta forma, solo dejas a los usuarios utilizar bbcode, no HTML (eso si, el script que reciba el formulario, debe eliminar todos los > < del htm)