buenas,
he estado leyendo ambos temas y me parece curioso el asunto que tienes de la comilla simple. pues según la documentación, addslashes escapa ciertos caracteres incluyendo la comilla simple. en todo caso, hay ciertos caracteres que por más que quieras mostrarlo en su forma pura, en ciertas circunstancias debes neutralizarlo. el ejemplo más conocido, conflico de comillas. al menos en javascript, los caracteres tienen distintas formas de representarse: la forma original y común, el escape habitual, en hexadecimal, y en unicode. estos últimos dos simplemente consiste en una secuencia de \xHH o \uHHHH. respecto a addslashes, se me hace la idea que posiblemente hay algún detalle que has ignorado.
un detalle adicional respecto a las entidades no interpretadas. he estado haciendo algunas pruebas y resulta que la interpretación de las entidades estan condicionadas al menos por dos factores: el origen del código y el tipo de documento. en cuanto a origen, las entidades solamente se interpretan si éste esta explicitamente integrado en el documento html. es decir, en un archivo externo *.js no va a funcionar. por tanto, los únicos dos lugares generales para integrar javascript es en el elemento <script> y en los atributos. acerca del tipo de documento, específicamente me refiero al DTD html o xhtml. resulta que dependiendo del DTD, las entidades son admisible o no en la etiqueta <script>... pero no afecta los atributos indistintamente del DTD. por supuesto, al hacer distinción en los DTDs, se asume que también se debe cargar correctamente el documento para que el navegador lo interprete como tal. el siguiente código muestra distintos resultados al inicio, pero los botones producen el mismo resultado. comprobado en firefox y chrome.
Código:
#xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<script type="text/javascript">
alert("&apos; -> '");
</script></head>
<body><input type="button" value="click" onclick="alert('<>');" />
<input type="button" value="error" onclick="alert(''');" /></body>
</html>
Código:
#html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<script type="text/javascript">
alert("&apos; -> '");
</script>
</head>
<body><input type="button" value="click" onclick="alert('<>');">
<input type="button" value="error" onclick="alert(''');">
</body></html>