✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как удалить изображения с помощью DOMDocument

23

Я писал о DOMDocument в нескольких других сообщениях (1, 2, 3, чтобы поделиться некоторыми), но я продолжаю находить его полезным по-разному.

Помните, DOMDocument — это класс в PHP, который позволяет нам манипулировать HTML-документом до его отображения в браузере.

Из руководства :

Представляет весь документ HTML или XML; служит корнем дерева документов.

Всякий раз, когда я думаю о работе с saveHTMLфункцией, я думаю о необходимости сериализовать новую информацию в файл или другой поток вывода перед отправкой ее в браузер.

Но мы не обязаны этого делать. Это можно сделать по памяти.

Показательный пример: в проекте мне нужно найти все элементы изображения в документе. Если у изображения нет действительного URL-адреса источника, мне нужно либо заменить исходный атрибут, либо удалить его.

Как удалить изображения с помощью DOMDocument

Для целей этого примера предположим следующее

  • isValidImageэто функция, отвечающая за проверку того, разрешается ли указанный исходный атрибут допустимым URL-адресом,
  • Что я задаю srcатрибут пустой строкой, а не изображением-заполнителем, чтобы упростить код,
  • И я возвращаю результат тому, что будет отображаться в шаблоне или партиале.

Я прокомментировал код, поэтому для этого примера должно быть достаточно легко следовать:

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

Обратите внимание, что приведенный выше код можно улучшить несколькими способами (например, вернуться раньше, если изображения не найдены), но цель состоит в том, чтобы показать, как заменить srcатрибут, если URL-адрес не разрешается должным образом. Таким образом, удаление изображений с помощью DOMDocument.

Если вам интересно, как определить, действителен ли URL-адрес, эта статья может оказаться полезной.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее