Convengamos primero que crear tu propio editor no es muy sencillo
Primero una aclaración, un textarea trata al código html como texto, así que no tendrías que utilizar necesariamente entidades html, salvo que si no lo hacés no te validaría como xhtml, por lo tanto si usas html sin convertirlo a entidades en el textarea, deberías utilizar el doctype de html5, con lo cual te validaría.
Con respecto a colorear un email, puede resolverse facilmente con un split() de javascript, claro que un editor supuestamente puede contener cosas bastante más complejas, por lo habría que utilizar métodos más complejos, expresiones regulares, etc.
Te dejo una demo, pero cuidado que el coloreado solo sirve para emails del tipo
[email protected], si hubiese más puntos en el email, p. ej
[email protected], ya no te serviría
Código HTML:
Ver original<!DOCTYPE html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
function pasarAlDiv(ta){
var v = document.getElementById(ta).value;
document.getElementById('resultados').innerHTML =v;
}
function colorear(){
var v = document.getElementById('email').value;
var a = v.split('@');
var b = a[1].split('.');
document.getElementById('resultados').innerHTML ="<span style='color: red'>" + a[0] + "</span>@<span style='color: green'>" + b[0] +"</span>.<span style='color: navy'>"+ b[1] +"</span>";
}
//]]>
<textarea cols="60" rows="3" id="editor1"> <div style="background: lime; width: 100px; height: 100px;">
Contenido de div en textarea
</div>
<button onclick="pasarAlDiv('editor1')">Pasar al div resultados
</button> <textarea cols="60" rows="3" id="editor2"> <div style="background: orange; width: 100px; height: 100px;"> Contenido de div en textarea
<button onclick="pasarAlDiv('editor2')">Pasar al div resultados
</button> <input type="button" onclick="colorear();" value="Colorear" />
Notá que un textarea tiene entidades y el otro no
Saludos