2015-04-27 51 views
0

我想從rss url中獲取鏈接。這是我的代碼:DOMDocument - 加載xml 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 ::負荷(http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml):無法打開流:HTTP請求失敗!
HTTP/1.1 403在/home/xxxxxxx/domains/xxxxxxx/public_html/data.php禁止線14上
警告:
DOM文檔::負載():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"); 

你能幫我嗎?爲什麼這個請求會給我一個錯誤?

感謝

+0

URL中有一個逗號 - 也許這是拋出錯誤? – RamRaider

回答

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; 

} 
0

在調用您的供稿之前添加此代碼,這將更改用戶代理。

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

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