tengo 2 implementaciones rápidas y pequeñas para la codificación HTML de forma segura.
Puede codificar todos los caracteres de la cadena:
function encode(e){return e.replace(/[^]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}
O simplemente apuntar a los personajes principales que preocuparse acerca de (&, inebreaks, <,>, "y ') como:
function encode(r){
return r.replace(/[\x26\x0A\<>'"]/g,function(r){return"&#"+r.charCodeAt(0)+";"})
}
var myString='Encode HTML entities!\n"Safe" escape <script></'+'script> & other tags!';
test.value=encode(myString);
testing.innerHTML=encode(myString);
/*************
* \x26 is &ersand (it has to be first),
* \x0A is newline,
*************/
<p><b>What JavaScript Generated:</b></p>
<textarea id=test rows="3" cols="55"></textarea>
<p><b>What It Renders Too In HTML:</b></p>
<div id="testing">www.WHAK.com</div>
'¿Por qué no apos' en lugar de' 39' #? –
@Eli Gray: la entidad * apos * se introdujo en XML 1.0 (y así se define para XHTML) pero no está definida en HTML 4. (Ver http://www.w3.org/TR/xhtml1/#C_16) – Gumbo
¡Qué pedazo de código tan genial! Me tomó un minuto para ver lo que estabas haciendo allí! Has hecho mi noche. –