2011-03-23 21 views

Respuesta

4

En mi experiencia, la mejor manera de manipular ciertas etiquetas HTML en mi experiencia es para usar un analizador DOM como HTML purifier, sin embargo, esto puede ser un poco complicado de configurar e incluso un poco exagerado para su aplicación. Si tuviera que hacerlo todo de nuevo, utilizaría un formato diferente (como el formato wiki o el código bb) y no el HTML, de esa manera usted puede convertir sus propias etiquetas simples en HTML y usted tiene control total sobre la salida.

Volviendo a la pregunta en cuestión, una solución rápida para usted sería usar strip_tags() y pasar un segundo argumento de una lista blanca de etiquetas, aunque esto no es 100% perfecto/seguro para poner HTML, por lo que a largo plazo ejecutar debe utilizar un analizador DOM o no permitir la entrada de HTML.

+2

No quiero quitar las etiquetas, quiero escapar de ellas. Mira mi ejemplo, la etiqueta span todavía está allí, pero se escapó, lo que significa que mostrará – keepwalking

+0

. Si quieres jugar con algunas etiquetas HTML y otras no, seriamente reconsideraría cómo y por qué estás haciendo esto porque lo harás. ** nunca ** sea capaz de analizar con precisión o seguridad el DOM con expresiones regulares. Para el diseño usaría etiquetas personalizadas y luego escapé ** todo ** HTML. – Dunhamzzz

+0

Sí, no puedo usar etiquetas personalizadas porque los mensajes provienen de un filtro de correo electrónico, etc ... es complicado. Resolví el problema con un simple preg_replace. Gracias por el soporte. – keepwalking

-1

PHP tiene una función strip_tags, creo que va a ser exactamente lo que busca here

+0

strip_tags no es seguro, solo mira las advertencias. – Peeter

+1

@Peeter: en realidad strip_tags es seguro, pero es necesario verificar el html que ingresa, ya que se basa en expresiones regulares ... y si el HTML es defectuoso, entonces usted tiene un problema mayor que las etiquetas – BigFatBaby

+2

. , strip_Tags NO es seguro, no tiene en cuenta los atributos en absoluto, por lo que analizará bien. – Dunhamzzz

0

Se necesita una lógica simple de implementar, algo parecido a continuación:
1. Crear una lista de etiquetas HTML que se NO quiero escapar.
2. Interceptar una etiqueta html (abrir o cerrar).
3. Si la etiqueta no está presente en su lista, reemplace las escuadras angulares que la rodean (<>) con & lt; y & gt ;, es decir <mytag> se convierte en & lt; mytag & gt;
4. Repita esto para todas las etiquetas en su archivo html.

Cuestiones relacionadas