Получение изображения в свернутом HTML с помощью DOM - PullRequest
3 голосов
/ 17 января 2012
function getPage($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  $result = curl_exec($ch);
  curl_close($ch);

  return $result;
}

$page = getPage(trim('http://localhost/test/test.html'));


$dom = new DOMDocument();
$dom->loadHTML($page);
$xp = new DOMXPath($dom);
$result = $xp->query("//img[@class='wallpaper']");

Я пытаюсь найти все изображения с классом wallpaper, и теперь я застрял в этой точке.Я пытался var_dump($result), но это странно object(DOMNodeList)[3].Как я наконец получу источник изображения?

Ответы [ 4 ]

2 голосов
/ 17 января 2012

В дополнение к ответу @ Phil вы также можете получить атрибут src непосредственно в запросе xpath вместо получения элемента img:

$srcs = array();
$result = $xp->query("//img[@class='wallpaper']/@src");
foreach($result as $attr) {
    $srcs[] = $attr->value;
}
2 голосов
/ 17 января 2012

$result - это объект DOMNodeList.

Вы можете узнать, сколько предметов в нем содержится с

$count = $result->length;

Доступ к элементам осуществляется индивидуально с помощью DOMNodeList::item()

if ($result->length > 0) {
    $first = $result->item(0);
    $src = $first->getAttribute('src');
}

Вы также можете выполнить итерацию как массив, например

foreach ($result as $img) {
    $src = $img->getAttribute('src');
}
1 голос
/ 17 января 2012

Вы можете получить доступ к изображениям в DOMNodeList с помощью петли foreach.

foreach($result as $img) {
   echo $img->getAttribute('src');
}

Вы можете получить первое с помощью echo $result->item(0)->getAttribute('src').Вы можете подтвердить наличие DOMNodeList элементов, проверив свойство length в $result.

0 голосов
/ 17 января 2012

Попробуйте

echo $result->getAttribute('src');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...