✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como remover imagens com DOMDocument

23

Escrevi sobre DOMDocument em alguns outros posts (1, 2, 3 para compartilhar alguns), mas continuo achando útil de diferentes maneiras.

Lembre-se, DOMDocument é uma classe em PHP que nos permite manipular o documento HTML antes de renderizá-lo no navegador.

Do manual :

Representa um documento HTML ou XML inteiro; serve como a raiz da árvore do documento.

Sempre que penso em trabalhar com a saveHTMLfunção, penso na necessidade de serializar as novas informações em um arquivo ou outro fluxo de saída antes de enviá-las ao navegador.

Mas não temos que fazer isso. Pode ser feito na memória.

Caso em questão: em um projeto, preciso encontrar todos os elementos de imagem em um documento. Se a imagem não tiver um URL de origem válido, preciso substituir o atributo de origem ou removê-lo.

Como remover imagens com DOMDocument

Para os propósitos deste exemplo, suponha o seguinte

  • isValidImageé uma função responsável por verificar se o atributo de origem especificado resolve para um URL válido,
  • Que estou definindo o srcatributo para uma string vazia em vez de uma imagem de espaço reservado para manter o código simples,
  • E devolvo o resultado para o que for renderizado no template ou no parcial.

Eu comentei o código, então deve ser fácil o suficiente para seguir este exemplo:

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

Observe que há várias maneiras de melhorar o código acima (como retornar antecipadamente se nenhuma imagem for encontrada), mas o objetivo é mostrar como substituir o srcatributo se a URL não for resolvida corretamente. Assim, removendo imagens com DOMDocument.

Se você estiver interessado em saber como determinar se um URL é válido, este artigo pode ser útil.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação