PHP - file_get_contents不起作用

时间:2015-12-29 10:25:19

标签: php

如何解决以下代码问题?此代码获取网站中的所有链接,但它不适用于某个网站,如下所示。我该如何解决这个问题?

<?php

    $html = file_get_contents('http://blogfa.com/members/updated.aspx');

    $dom = new DOMDocument();
    @$dom->loadHTML($html);

    // grab all the on the page
    $xpath = new DOMXPath($dom);
    $hrefs = $xpath->evaluate("/html/body//a");

    for ($i = 0; $i < $hrefs->length; $i++) {
        $href = $hrefs->item($i);
        $url = $href->getAttribute('href');
        echo $url . '<br />';
    }

?>

2 个答案:

答案 0 :(得分:1)

实际上你正在获取链接..但是有一个警告..要解决这个你必须添加一行.. 我收到了这个警告

E_WARNING:类型2 - DOMDocument :: loadHTML():htmlParseStartTag:misplaced&lt; body&gt;实体中的标签,行:20 - 第6行

解决方案:

<?php
$html = file_get_contents('http://blogfa.com/members/updated.aspx');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);

// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
    $href = $hrefs->item($i);
    $url = $href->getAttribute('href');
    echo $url . '<br />';
}
?>

libxml_use_internal_errors(真);用于禁用警告..

答案 1 :(得分:0)

当我运行您的代码时,我收到以下PHP错误:

E_WARNING : type 2 -- DOMDocument::loadHTML(): htmlParseStartTag: misplaced <body> tag in Entity, line: 20 -- at line 6

如果您在http://blogfa.com/members/updated.aspx查看网页的源代码,您会看到<body> - 代码已打开两次。

尝试删除第二个<body>标记。除此之外,您的代码似乎有效。