我正在尝试使用网址加载HTML页面。这就是我现在要做的就是找到页面上的图像数量:
$html = "http://stackoverflow.com/";
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('*');
$count = 0;
foreach ($tags as $tag) {
if (strcmp($tag->tagName, "img") == 0) {
$count++;
}
}
echo $count;
我知道这不是一种有效的方法,我只是将其设置为一个例子。每次,计数为0.但页面上有图像。这让我相信页面加载不正确。我究竟做错了什么?感谢。
答案 0 :(得分:1)
HTML中的标记名称是大写的,但您可以使用strcasecmp
代替strcmp
来避免此问题。
或者通过正确执行来避免这两个问题:
$count = $doc->getElementsByTagName('img')->length;
答案 1 :(得分:0)
来自the docs
DOMDocument :: loadHTML - 从字符串加载HTML
它的签名也非常清楚:
public bool DOMDocument::loadHTML ( string $source [, int $options = 0 ] )
您可以尝试使用DOMDocument::loadHTMLFile
,或者只是使用file_get_contents
或cURL请求获取给定网址的标记(以最适合您的方式)。
请不要使用 death 的错误抑制操作符@
,如果有事情发出通知/警告/错误,存在问题。不要忽视它,解决它!