Un poco de información sobre el tema de los caracteres de escape para los caracteres especiales (comillas, etc):
Hay un comando de configuración en
php.ini que se llama
magic_quotes_gpc. El gpc se refiere a datos de entrada GET, POST y Cookies.
Puede tener el valor
on o
off. Si está a on, dentro de los datos de entrada, los caracteres especiales automáticamente se escapan con
\ como parece ser tu caso.
Si está a off, es necesario escapar los caracteres especiales con
addslashes("cadena"); y al recuperarlos de la base de datos se les quitan los caracteres de escape con
stripslashes("cadena");
Para comprobar si magic_quotes_gpc está activado o no se usa la función
get_magic_quotes_gpc(), que devuelve true si está a on y false si está a off.
De esta forma, independientemente de cómo lo dejes configurado, (yo lo dejo así:
magic_quotes_gpc=off en
php.ini) es recomendable
SIEMPRE hacer la comprobación antes de almecenar datos de entrada:
Código PHP:
if (!get_magic_quotes_gpc()) {
$cadenaDeEntrada = addslashes($cadenaDeEntrada);
}
y esto con los datos de salida
Código PHP:
$cadenaDeSalida = stripslashes($cadenaDeSalida);
De esta forma se evitarán esos errores en todo momento.
En los datos de salida, según se requiera, también se utiliza el filtro
htmlspecialchars() que convierte los caracteres especiales de HTML en caracteres ASCII. Por ejemplo si una cadena de salida del nombre de una compañía nos tiene que dar: 'Daddy & Co.', y no deseamos que aparezca así: \'Daddy & Co.\', deberemos usar stripslashes() para quitar las secuencias de escape y htmlspecialchars() para convertir & en &.