[PHP] RegExp qui va bien?

function CleanAttributes($what) { $remove = array('width','height','class','style');

foreach($remove as $attribute)
$what = preg_replace("+$attribute(="|=’|=)[():;a-z0-9"’ ]+"," ",$what);
return $what;
}
[/quote]Voila,  et ca marche pas trop bien pour nettoyer les attributs spécifiés entre parenthèses. Seulement, je ne suis pas un spécialiste… en fait elle me laisse des bouts d’attributs (exemple: width=250 donne 50) et je sais pas pourquoi.

ensuite j’aimerais qu’il me laisse l’attribut class juste pour la balise div… cad il me l’ote tout le temps, sauf quand ya une balise div…

[quote]

function CleanAttributes($what)
{
$remove = array(‹ width ›,‹ height ›,‹ class ›,‹ style ›);

foreach($remove as $attribute)
$what = preg_replace("+$attribute(="|=’|=)[():;a-z0-9"’ ]+"," ",$what);
return $what;
}
[/quote]Voila, 
et ca marche pas trop bien pour nettoyer les attributs spécifiés
entre parenthèses. Seulement, je ne suis pas un spécialiste… en fait
elle me laisse des bouts d’attributs (exemple: width=250 donne 50) et
je sais pas pourquoi.

ensuite j’aimerais qu’il me laisse
l’attribut class juste pour la balise div… cad il me l’ote tout le
temps, sauf quand ya une balise div…[/quote]

Je me demande pourquoi php te jette pas lorsque tu mets un + au début d’une regexp :confused:

function forbidden_attr($tag)

{

$var = array(‹ div › => arrray(‹ width ›, ‹ height ›, ‹ style ›),

                     '*' =>  array('width', 'class', 'height', 'style'));

foreach ($var as $tagname => $forbid)

  if ($tag === $tagname)

      return $forbid;

return $var['*'];

}

function what($what)

{

$tagname = preg_replace("^<([^[:space]]+).*", "1", $what);

$forbid = forbidden_attr($tagname);

foreach ($forbid as $attr)

    $what = preg_replace("$attr=(".*?"|'.*?'|[w]*)", "", $what);

return $what

}

J’ai pas testé, mais ça devrait ressembler à ça

(Raaah! y’aurait pas moyen de mettre un white-space:pre pour les trucs div class=code ? c’est imbitable :/)
Ce message a été édité par Freddy le 07/12/2003

un petit up…

il existe des gars qui ont fait cela

ça mange pas de pain et ça filtre les tags, les attributs ainsi que des
truc vilain vilain (qui a dit cross site scripting ?). le tout en php.
Ce message a été édité par cpu_syl le 12/12/2003