Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment supprimer des images avec DOMDocument

16

J’ai écrit sur DOMDocument dans quelques autres articles (1, 2, 3 pour en partager quelques-uns) mais je continue à le trouver utile de différentes manières.

Rappelez-vous, DOMDocument est une classe en PHP qui nous permet de manipuler le document HTML avant de le rendre dans le navigateur.

Du manuel :

Représente un document HTML ou XML entier ; sert de racine à l’arborescence du document.

Chaque fois que je pense travailler avec la saveHTMLfonction, je pense devoir sérialiser les nouvelles informations dans un fichier ou un autre flux de sortie avant de les envoyer au navigateur.

Mais nous n’avons pas à le faire. Cela peut être fait en mémoire.

Exemple: dans un projet, j’ai besoin de trouver tous les éléments d’image dans un document. Si l’image n’a pas d’URL source valide, je dois soit remplacer l’attribut source, soit le supprimer.

Comment supprimer des images avec DOMDocument

Pour les besoins de cet exemple, supposons ce qui suit

  • isValidImageest une fonction chargée de vérifier si l’attribut source spécifié correspond à une URL valide,
  • Que je définisse l’ srcattribut sur une chaîne vide plutôt qu’une image d’espace réservé pour garder le code simple,
  • Et je renvoie le résultat à tout ce qui sera rendu dans le modèle ou le partiel.

J’ai commenté le code, il devrait donc être assez facile à suivre pour cet exemple:

<?php

// Instantiate a DOMDocument object and load the incoming $description HTML.
$domDocument = new DOMDocument();
$domContent = $domDocument->loadHTML(mb_convert_encoding($description, 'HTML-ENTITIES'));

// Find all of the images in the HTML.
$images = $domDocument->getElementsByTagName('img');

// If there are images, then iterate through each of them.
if (0 !== count($images)) {
    $urlPrefix = $this->getUrlPrefix(); // A helper function for getting the URL prefix.
    foreach ($images as $image) {
        $image->setAttribute(
            'src',
            $urlPrefix.$image->getAttribute('src')
        );

        // If the image's source results in a 404 status code, set the `src` to an empty string.
        if (!$this->isValidImage($image->getAttribute('src'))) {
            $image->setAttribute('src', '');
        }
    }
}

// Save the changed document and send it to the front-end.
return $domDocument->saveHTML();

Notez qu’il existe plusieurs façons d’améliorer le code ci-dessus (par exemple, revenir plus tôt si aucune image n’est trouvée), mais le but est de montrer comment remplacer l’ srcattribut si l’URL ne se résout pas correctement. Ainsi, supprimer des images avec DOMDocument.

Si vous souhaitez savoir comment déterminer si une URL est valide, cet article peut vous être utile.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More