Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/08/2011, 18:17
naggety
 
Fecha de Ingreso: agosto-2011
Mensajes: 58
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Restringir esiquetas de estilo que se pueden enviar por formulario

He conseguido hacerlo.
He utilizado la función preg_replace_callback para buscar el patrón style="loquesea" y sustituirlo por la misma cadena pero dejando solo los atributos "autorizados".
Así:

Código PHP:
Ver original
  1. $texto = preg_replace_callback ("/(style.*=.*\".*\"|style.*=.*'.*')/i","limpia_estilos",$texto);

Antes he definido la función limpia_estilos, que separa todos los atributos contenidos de estilo y vuelve a colocarlos sólo si están autorizados.

Código PHP:
Ver original
  1. function limpia_estilos ($cadena) {
  2.  
  3.     $contenido_estilos = explode ('"',$cadena[0]);
  4.     $contenido_estilos_separado = explode (';', $contenido_estilos [1]);
  5.     $salida = "style=\"";
  6.     foreach ($contenido_estilos_separado as $valor) {
  7.         if (preg_match ("/(color|margin-left|text-align|width|height)/i",$valor) > 0)
  8.             $salida .= $valor.';';
  9.     }
  10.     $salida .= '"';
  11.     return $salida;
  12. }