Как заменить getElementsByTagName() на document.getElementsById()
У меня есть этот код, и я хочу получить ссылку на изображение, сохраненное на веб-сайте по его идентификатору, но этот код использует getElementsByTagName('')
:
<?php
$html = file_get_contents('http://example.com/dir/webpage.html');
$dom = new DOMDocument;
@$dom->loadHTML($html);
$links = $dom->getElementsByTagName('img');
foreach ($links as $link){
echo $link->nodeValue;
echo $link->getAttribute('href'), '<br>';
}
?>
И HTML это:
<a href="/images/image1.png" id="img_1_id">
<div class="download"></div>
</a>
Я хочу заменить getElementsByTagName('img')
с document.getElementsByById(img_1_id)
поэтому скрипт получает URL выбранного изображения с идентификатором: img_1_id
Если есть другой способ / код для этого, пожалуйста, напишите:)
Спасибо за плюсы!
3 ответа
getElementById
возвращает один элемент, вам не нужен цикл.
$link = $dom->getElemebtById('img_1_id');
echo $link->nodeValue;
echo $link->getAttribute('href');
КСТАТИ, img
элементы не имеют href
атрибут, они имеют src
, У них также нет ничего в их nodeValue
, поскольку <img>
не является элементом контейнера.
Вы должны поставить
document.getElementsByById("img_1_id");
Итак, вы получаете элемент с id = "img_1_id"
Как насчет этого?
<?php
$html = file_get_contents('http://example.com/dir/webpage.html');
$dom = new DOMDocument;
@$dom->loadHTML($html);
$links = $dom->getElementById('img_1_id');
foreach ($links as $link){
echo $link->nodeValue;
echo $link->getAttribute('href'), '<br>';
}
?>