lundi, août 30 2010, 17:37
Rechercher et remplacer les esperluettes dans du HTML
Par Jean-Pascal MILCENT - Lien permanent
Pour rechercher et remplacer des esperluettes dans du HTML en PHP les expressions régulières rendent bien service. Pour faire bien les choses, il faut rechercher toutes les esperluettes à l'exception de celles contenues dans les entités HTML.
Voici une expression régulière qui fonctionne bien :
'/&(?!(a-z+|#0-9+|#x0-9a-f+);)/i'
À l'aide de cette expression, il est possible de nettoyer le contenu d'un tableau multi-dimensionnel. Voici deux fonctions (utilisable en tant que méthode de classe) rendant ce service :
function postraiterDonnees(&$tableau) {
if (count($tableau) > 0) {
foreach ($tableau as $cle => &$valeur) {
if (is_string($valeur)) {
$valeur = remplacerEsperluette($valeur);
} else if (is_array($valeur)) {
postraiterDonnees($valeur);
}
}
}
}
function remplacerEsperluette($txt) {
$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9a-f]+);)/i', '&', $txt, -1);
return $txt;
}
aucun commentaire