【发布时间】:2014-07-10 08:50:29
【问题描述】:
所以我有大量的 html 图像,id 为 images。一个例子是这样的:
<img id="images" src="video images/the wind rises.jpg" alt="" width="700" height="525" class="the-wind-rises1" />
我想收集所有的 src(例如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":[]}
【问题讨论】:
-
首先,任何给定的
id只能合法地拥有一个元素,所以这总是令人讨厌的。其次,使用@几乎不是一个好主意。 -
或者你可以使用getbytag
$doc->getElementsByTagName('img'); -
@lonesomeday 有时你需要它。例如,如果您正在解析数据,并且不想向前端(用户)发送警告。但是你应该检查所有时间,如果它成功,如果没有实现自定义错误处理 (
throw new XmlNotValidException()) -
@ChristianGollhardt 为什么在生产服务器上启用了错误消息?
-
@lonesomeday 那不是,我说过的。但是,如果您的应用程序的状态不是您期望的状态,您为什么要继续?当然在生产使用中,我要么看不到警告,但我是否应该在开发阶段看到这么多警告,以至于我看不到我感兴趣的警告?如果自己做一些异常处理,用
@感觉不错