PHP : script pour supprimer certains attributs de tags HTML

J’ai eu besoin récemment de pouvoir contrôler les attributs des liens qui s’affichaient sur le blog et plus spécialement ceux qui sont fournis par des sites tiers (sponsors etc).

PHP : script pour retirer les attributs des tags HTML photo

Et bien figurez-vous que certains liens ne sont pas du tout valides : leurs liens ont des attributs obsolètes ou inadaptés avec comme des target="_blank".

Tout cela brise la navigation en fenêtres/onglets supplémentaires, et supprime la fonctionnalité du bouton back pour revenir à la page précédente.

Du coup, j’ai retroussé un peu mes manches pour remédier à ce problème.

Cela m’a donné ce script, qui me permet de dresser la liste des attributs à filtrer dans un code source donné.

Sky Cleanup Attributes

Voici la fonction principale, sobrement appelée Sky Cleanup Attributes : elle permet de filtrer des attributs définis dans une liste. Il suffit de passer le code dans une variable et la fonction filtre et retourne le code final, sans les attributs gênants.

<?php
/*
|-----------------------------------------------------------------------
| Sky Cleanup Attributes by Matt - www.skyminds.net
| https://www.skyminds.net/?p=2523
|-----------------------------------------------------------------------
|
| Clean up unwanted HTML attributes defined in a list in given HTML code and return cleaned output.
|
*/
function sky_cleanup_attributes($source)
{
    // Define a list of attributes to remove in an array.
    $remove = array('style', 'class', 'target', 'someattribute');
    $cleanstring = $source;
    foreach($remove as $attribute)
    {
        $cleanstring = preg_replace('!\\s+'.$attribute.'=("|\')?[-_():;a-z0-9 ]+("|\')?!i','',$cleanstring);
    }
    return $cleanstring;
}Code language: PHP (php)

Exemple d’application

Prenons le code HTML suivant:

<?php
$html = '<span style="font-weight:bold;background:red;">this span has a style attribute</span>
<div class="noborder">this div has two different attributes</div>
<div class="leftclass redclass">this div has two classes applied in one attribute</div>
<a href="https://www.skyminds.net/?p=2523" target="_blank" rel="noopener">Sky Cleanup Attributes by Matt</a>';Code language: HTML, XML (xml)

Passons maintenant ce code dans notre fonction :

<?php
// Clean up input source
$cleaned = sky_cleanup_attributes($html);

// Echo cleanup code (in textarea for demo purposes)
echo '<textarea style="width: 100%; height: 200px;>' . htmlentities($cleaned) . '</textarea>';Code language: HTML, XML (xml)

Une manière simple et efficace de nettoyer le code automatiquement, avec une maintenance minimale.

Besoin d’un partenaire fiable pour votre projet WordPress/WooCommerce ? Je mets mon expertise à votre service pour des résultats concrets.

Bénéficiez d’un accompagnement personnalisé »

Matt

Développeur certifié WordPress & WooCommerce chez Codeable, administrateur système et enseignant-chercheur, je mets mon expertise au service de vos projets web.

Ma priorité : des sites performants, fiables et sécurisés, pensés pour offrir la meilleure expérience utilisateur. J’accompagne chaque client avec écoute et pédagogie, pour transformer vos idées en solutions concrètes et durables.

Profitez de solutions WordPress et WooCommerce sur-mesure, pensées pour optimiser durablement votre site.
Explorez les leviers pour booster l’impact de votre site web.

Opinions