✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як видалити зображення за допомогою DOMDocument

17

Я писав про 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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі