✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come rimuovere le immagini con DOMDocument

40

Ho scritto di DOMDocument in alcuni altri post (1, 2, 3 per condividerne alcuni) ma continuo a trovarlo utile in diversi modi.

Ricorda, DOMDocument è una classe in PHP che ci consente di manipolare il documento HTML prima di visualizzarlo nel browser.

Dal manuale :

Rappresenta un intero documento HTML o XML; funge da radice dell’albero dei documenti.

Ogni volta che penso di lavorare con la saveHTMLfunzione, penso di dover serializzare le nuove informazioni in un file o in un altro flusso di output prima di inviarlo al browser.

Ma non dobbiamo farlo. Si può fare a memoria.

Caso in questione: in un progetto, ho bisogno di trovare tutti gli elementi dell’immagine in un documento. Se l’immagine non ha un URL di origine valido, è necessario sostituire l’attributo di origine o rimuoverlo.

Come rimuovere le immagini con DOMDocument

Ai fini di questo esempio, si supponga quanto segue

  • isValidImageè una funzione responsabile del controllo per vedere se l’attributo di origine specificato si risolve in un URL valido,
  • Che sto impostando l’ srcattributo su una stringa vuota anziché su un’immagine segnaposto per mantenere il codice semplice,
  • E restituisco il risultato a tutto ciò che verrà visualizzato nel modello o nel parziale.

Ho commentato il codice, quindi dovrebbe essere abbastanza facile da seguire per questo esempio:

<?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();

Si noti che ci sono diversi modi in cui il codice sopra può essere migliorato (come restituire in anticipo se non vengono trovate immagini), ma lo scopo è mostrare come sostituire l’ srcattributo se l’URL non viene risolto correttamente. Pertanto, rimuovendo le immagini con DOMDocument.

Se sei interessato a come determinare se un URL è valido, questo articolo potrebbe essere utile.

Fonte di registrazione: 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