Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Kses. Validador de etiquetas HTML para PHP


Un script PHP para validar un código HTML para eliminar etiquetas no deseadas, dejando los tags permitidos.


07/2/08 - Vamos a comentar un script realizado con PHP que consiste en un filtro de código HTML / XHTML, para validar que sólo tenga las etiquetas que deseamos, borrando todos los tags indeseables que pueda tener.

Hay veces que tenemos formularios, para entrada de datos por parte de los usuarios, en los que se pueden escribir etiquetas HTML, por ejemplo para formatear el texto. En estos casos es muy probable que deseemos permitir sólo un conjunto de etiquetas HTML, rechazando el resto. Para ello, tendríamos que analizar el código HTML escrito por el usuario para eliminar todas las etiquetas no permitidas.

No dudamos que crear un script PHP para analizar un código HTML y eliminar sólo ciertas etiquetas sería una tarea cuando menos laboriosa. Pero con Kses, el script que estamos comentando, podemos hacer esto de una manera extremadamente sencilla. Veremos en este artículo un ejemplo de funcionamiento de Kses, para limpiar el código HTML de etiquetas no permitidas.

Lo primero sería acceder a la página del proyecto en Source Forge: http://sourceforge.net/projects/kses

Allí tendremos que descargar la versión más actualizada de Kses, en el momento de escribir el artículo iban por la release 0.2.2.

Kses tiene una función principal, que es la que realiza el filtro de etiquetas HTML. Esta función recibe tres parámetros:

  • Código HTML / XHTML a validar. Es uma cadena que contiene un texto mezclado con etiquetas, que es el que hay que filtrar para dejar sólo los tag permitidos.
  • Etiquetas HTML permitidas. Es un array asociativo, de dos dimensiones, donde se especifican las etiquetas HTML válidas y los atributos que deseamos permitir.
  • Protocolos permitidos, entre los que hay http, https, ftp, news, etc. Este campo es opcional y si no lo indicamos ya se cargan una serie de protocolos habituales. Estos protocolos se utilizan en los enlaces o las rutas de las imágenes, por ejemplo.
Pongamos que tenemos esta cadena de caracteres de código HTML:

$texto = "<a href='hola.php' target='_blank'>enlace</a>. Esto es un <b style='font-size:120%'>texto</b>. Esto <i>italico</i>.<p>Lo que sea<sup>3</sup></p>";

Ahora tenemos este array de etiquetas permitidas:

$tags_permitidos = array('b' => array(), 'i' => array());

Es este array de tags HTML válidos sólo estamos permitiendo etiquetas <b> y etiquetas <i> , sin ningún atributo posible. Luego veremos la especificación de una lista mayor de etiquetas y atributos.

Para filtrar ese código HTML ejecutamos la función kses():

$texto_filtrado = kses($texto,$tags_permitidos);

Esto nos devolveria uma cadena como esta:

enlace. Esto es un <b>texto</b>. Esto <i>italico</i> .Lo que sea3

Vemos que sólo se han conservado las etiquetas que habíamos definido en el array y que a la etiqueta <b> aparece sin el parámetro que tenía en el código HTML original.

Ahora veamos un array de etiquetas permitidas más amplio:

$tags_permitidos = array('b' => array('style' => 1),
   'span' => array('style' => 1),               
   'i' => array('style' => 1),
   'a' => array('style' => 1, 'href' => 1, 'title' => 1),
   'p' => array('style' => 1, 'align' => 1),
   'br' => array(),
   'blockquote' => array('style' => 1),
   'li' => array('style' => 1),
   'ul' => array('style' => 1),
   'ol' => array('style' => 1),
   'u' => array('style' => 1),
   'table' => array('cellpadding' => 1, 'cellspacing' => 1, 'border' => 1, 'style' => 1),
   'tr' => array('style' => 1),
   'td' => array('valign' => 1, 'align' => 1, 'rowspan' => 1, 'colspan' => 1, 'style' => 1)
   );
En este caso, estamos permitiendo unas cuantas etiquetas y atributos. Si filtramos el texto inicial con el código HTML de antes nos dará este resultado:

<a href='hola.php'>enlace</a>. Esto es un <b style='font-size:120%'>texto</b>. Esto <i>italico</i>.<p>Lo que sea3</p>

Como podemos ver, sólo ha eliminado la etiqueta <sup> y el atributo target='_blank' del enlace, que no estaban en el array de configuración de etiquetas HTML permitidas.

Espero que estas notas hayan sido suficientes para entender rápidamente kses, un útil filtro de etiquetas HTML, que podemos utilizar en nuestras aplicaciones PHP.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 1 comentario no revisado

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com
URL: http://www.desarrolloweb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de PHP
Categorías
+Scripts en PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia