【问题标题】:DOMDocument - Load xml rss - failed to open streamDOMDocument - 加载 xml rss - 无法打开流
【发布时间】:2015-04-27 12:41:53
【问题描述】:

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

$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;
}

我已将此代码用于其他几个 URL,它们都有效,但在这个我得到:

警告:
DOMDocument::load(http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml):打开流失败:HTTP 请求失败!
HTTP/1.1 403 Forbidden in /home/xxxxxxx/domains/xxxxxxx/public_html/data.php on line 14
警告:
DOMDocument::load(): I/O 警告: 未能加载外部实体“http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml
在 /home/xxxxxxx/domains/xxxxxxx/public_html/data.php 第 14 行
http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml

第 14 行是:

$doc->load("http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml");

你能帮帮我吗?为什么这个请求给我一个错误?

谢谢

【问题讨论】:

  • URL 中有一个逗号 - 也许这会引发错误?

标签: php xml domdocument


【解决方案1】:

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

$c=curl_init('http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml');
curl_setopt( $c, CURLOPT_USERAGENT,'nginx-curl-blahblahblah' );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
$r=curl_exec( $c );
curl_close( $c );

$doc = new DOMDocument();
$doc->loadxml($r);
$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;

}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢您添加此答案。试图用一点第三方代码找出问题所在,我正在失去理智,而这正是它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2017-04-30
    • 2017-03-01
    相关资源
    最近更新 更多