Mostrar html como texto menos los enlaces

Iniciado por sexto, 31 Enero 2014, 13:09 PM

0 Miembros y 1 Visitante están viendo este tema.

sexto

A ver como lo explico.
Tengo una web con el envío de un formulario, y en el campo del contenido quiero puedas poner código html si quieres, pero que luego el navegador me saque ese código html tal cual (no lo interprete), pero que los enlaces sí que los interprete.
He hecho una función que si escribes un enlace, lo convierta a un enlace html, es decir, que si alguien escribe www.google.es, luego en código saldrá <a href="http://www.google.es" target="_blank">www.google.es</a>.

El caso es, he conseguido hacer lo que quiero, pero luego los acentos y las ñ me saca símbolos raros por muchos utf8 decodes y encondes que ponga, también he conseguido que me saque los enlaces poniendo la función esa para convertirlos a la hora de mostrarlos y no de guardarlos y luego poniendo a la hora de guardarlo pasarlo por esta función:
Código (php) [Seleccionar]

function sanitize_text($text)
{
    return htmlspecialchars(addslashes(stripslashes(strip_tags(trim($text)))));
}


Pero me quita las etiquetas html que pongo y me pone barras invertidas antes de las comillas.
¿Hay alguna forma de que me funcione todo lo que tiene que funcionar sin volverme loco?
Es decir, que me muestre el código html que se introduzca pero tal cual, que no me meta las barras del demonio antes de las comillas, que no me quite las etiquetas y que no me cambie los acentos y eñes por cosas raras.

Gracias.

:ohk<any>

No estoy seguro de haberte entendido bien, pero para recibir un texto y luego hacer que el navegador lo interprete solo debes hacer esto:

Al recibir la variable:

Código (php) [Seleccionar]

function sanitize_text_in($text)
{
   return htmlspecialchars($text, ENT_QUOTES);
}


Al mostrar la variable:

Código (php) [Seleccionar]

function sanitize_text_out($text)
{
   return htmlspecialchars_decode($text, ENT_QUOTES);
}


Y ya.

Si pones el addslashes cada ves que haya un ' se pondrá automáticamente un \
Es la función de esa función :P

Saludos
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.