所以我在html中加载了一组ID为images
的图像。一个例子是这样的:
<img id="images" src="video images/the wind rises.jpg" alt="" width="700" height="525" class="the-wind-rises1" />
我想要收集所有的srcs(例如video images/the wind rises.jpg
)
我试过这个。但它不起作用怎么来了?:
<?php
$html = file_get_contents('http://urlofwebsite.co.uk/xxxx');
function linkExtractor($html){
$imageArr = array();
$doc = new DOMDocument();
@$doc->loadHTML($html);
$images = $doc->getElementById('images');
foreach($images as $image) {
array_push($imageArr, $image->getAttribute('src'));
}
return $imageArr;
}
echo json_encode(array("images" => linkExtractor($html)));
?>
它刚刚回归:
{"images":[]}
答案 0 :(得分:4)
您正在使用getElementById
,此函数应返回一个元素或null,请查看:http://www.php.net/manual/en/domdocument.getelementbyid.php
我想说下面的尝试:
$image = $doc->getElementById('images');
return $image->getAttribute('src');
如果您打算收集所有图片的来源,则必须使用getElementsByTagName
:http://www.php.net/manual/en/domdocument.getelementsbytagname.php
function linkExtractor($html){
$imageArr = array();
$doc = new DOMDocument();
@$doc->loadHTML($html);
$images = $doc->getElementsByTagName('img');
foreach($images as $image) {
array_push($imageArr, $image->getAttribute('src'));
}
return $imageArr;
}
答案 1 :(得分:0)
因为ID(应该)是唯一的,所以它只返回一个元素
$images = $doc->getElementById('images');
array_push($imageArr, $images->getAttribute('src'));
文档:http://www.php.net/manual/en/domdocument.getelementbyid.php