это мой текущий 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.
Спасибо, С наилучшими пожеланиями
Поделитесь пожалуйста div[@class = "test"] html






Для каждого div вы можете использовать $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>";
}
}
}
I want to output the value of
data-srcadditionally to the text in thediv.
Мне не известно о каком-либо "текст в div" в вашем вопросе.
Чтобы получить value из атрибута imgdata-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
...
Вы запрашиваете div с классами, равными
test, и этот тег img включаетalt, равныйtest. Следовательно, не включен.