DOMDocument - 加载xml rss - 无法打开流

时间:2015-04-27 12:41:54

标签: php xml domdocument

我想从rss网址获取链接。这是我的代码:

$doc = new DOMDocument();
$doc->load("http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml");
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {

    $title = $node->getElementsByTagName('title')->item(0)->nodeValue;
    $title=strip_tags($title);
    $link=$node->getElementsByTagName('link')->item(0)->nodeValue;
}

我已经将这段代码用于其他几个网址,并且所有这些网址都有效,但在这个网址上我得到了:

  

警告:
  DOMDocument :: load(http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml):无法打开流:HTTP请求失败!
  HTTP / 1.1 403禁止在第14行的/home/xxxxxxx/domains/xxxxxxx/public_html/data.php中生效   的警告:
  DOMDocument :: load():I / O警告:无法加载外部实体“http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml
  在第14行的/home/xxxxxxx/domains/xxxxxxx/public_html/data.php中   http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml

第14行是:

$doc->load("http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml");
你可以帮帮我吗?为什么这个请求会给我一个错误?

由于

2 个答案:

答案 0 :(得分:1)

使用上面的代码对我来说失败了,这不是因为我评论的逗号。我发现,使用curl,我能够检索xml文件。

cabal repl

答案 1 :(得分:1)

在调用您的Feed之前添加此代码,这将更改用户代理。

$opts = array(
    'http' => array(
        'user_agent' => 'PHP libxml agent',
    )
);

$context = stream_context_create($opts);
libxml_set_streams_context($context);