PHP - DOMDocument лом divs не удаляют изображения - PullRequest
0 голосов
/ 14 декабря 2018

это мой текущий php-код:

$dom = new DOMDocument;
@$dom->loadHTML($file);

$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="test"]');
if ($divs->length > 0) {
    foreach ($divs as $key => $div) {
       print_r($div);
    }
}

В каждом div также есть изображение, которое я тоже хочу вывести, но DOMDocument удаляет его.

Изображения реализованы как вHTML-файл:

<img src="loading.gif" data-src="https://test.com/images/images/120/1313131313232.jpg" alt="test" />

Я хочу вывести значение data-src дополнительно к тексту в div.

Спасибо, С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я хочу вывести значение data-src дополнительно к тексту в div.

Яне знает ни одного " текста в div " в вашем вопросе.
Чтобы получить атрибут value из img data-src, вы можете использовать getAttribute('data-src'), то есть:

$html = <<< L
<img src="loading.gif" data-src="https://test.com/images/images/120/1313131313232.jpg" alt="test" />
<img src="loading.gif" data-src="https://test.com/images/images/120/1313131313233.jpg" alt="test" />
<img src="loading.gif" data-src="https://test.com/images/images/120/1313131313256.jpg" alt="test" />
L;

$dom = new DOMDocument;
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$divs = $xpath->query('.//img[contains(@alt, "test")]'); # or query('.//img[contains(@src, "loading.gif")]');
foreach ($divs as $img) {
    print($img->getAttribute('data-src')."\n");
}

Вывод:

https://test.com/images/images/120/1313131313232.jpg
https://test.com/images/images/120/1313131313233.jpg
...

PHP Demo

0 голосов
/ 14 декабря 2018

Для каждого деления вы можете использовать $div->getElementsByTagName("img"), чтобы получить изображение.Затем зациклите изображения, проверьте, является ли атрибут alt img test и получите атрибут data-src:

@$dom->loadHTML($file);
$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="test"]');
foreach ($divs as $key => $div) {
    echo $div->textContent . "<br>";
    foreach ($div->getElementsByTagName("img") as $img) {
        if ($img->getAttribute('alt') === 'test') {
            echo $img->getAttribute('data-src') . "<br>";
        }
    }
}

Демо

...