在 PHP 中加载 HTML 页面


Loading an HTML page in PHP

我正在尝试使用URL加载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。但是页面上有图像。这让我相信页面加载不正确。我做错了什么?谢谢。

HTML 中的标记名称通常为大写,但是您可以通过使用 strcasecmp 而不是 strcmp 来避免此问题。

或者通过正确执行此操作来避免这两个问题:

$count = $doc->getElementsByTagName('img')->length;

来自文档

DOMDocument::loadHTML — 从字符串加载HTML

它的签名也很清楚这一点:

public bool DOMDocument::loadHTML ( string $source [, int $options = 0 ] )

您可以尝试使用 DOMDocument::loadHTMLFile ,或者只是使用 file_get_contents 或 cURL 请求(以最适合您的为准)获取给定 url 的标记。

请不要使用错误抑制运算符,如果某些东西发出通知/警告/错误,则死亡@,则存在问题。不要忽视它,修复它!