2010-01-25 53 views
1

Wordpress正在渲染一個RSS提要http://myurl.com/feed/rss/,但當然實際上並沒有一個文件。我正在編寫腳本來讀取和渲染RSS,但將XML文件加載失敗,因爲那裏實際上沒有文件。我寫:如何加載由php呈現的rss提要的內容?

$rss = simplexml_load_file('/news/feed/rss/'); 

而且我得到這個錯誤:

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "/news/feed/rss/" 

即使使用的file_get_contents給了我這個錯誤:

Warning: file_get_contents(/news/feed/rss/) [function.file-get-contents]: failed to open stream: No such file or directory

回答

3

該文件不存在,因爲該網址被重定向,但你試圖以文件的形式訪問它。假設你有正確的fopen封裝(每個人都一樣),嘗試用SimpleXML打開的網址:

$rss = simplexml_load_file('http://myurl.com/news/feed/rss/'); 
+0

這聽起來像是最好的解決方案,謝謝。該網站的主機說:「在服務器配置中禁用URL文件訪問」。所以我現在正在與之爭論。 – Corey 2010-01-25 15:51:05

+0

這很奇怪,我從來沒有遇到過禁用Fopen包裝的主機 – 2010-01-25 15:52:18

+0

Bah,它是最好的。轉到WordPress支持論壇,詢問如何獲取RSS。當然有一個函數會返回給你,並且不會導致處理額外HTTP請求的性能損失。 – 2010-01-25 19:53:27

0

最好的辦法是使用捲曲(http://us2.php.net/manual/en/book.curl.php),用於加載外部內容,因爲你可以用頭操縱等,它也支持重定向等。

例如,如果mod_security被安裝在apache上 - 你將無法在不傳遞用戶代理頭等的情況下抓取內容,但Curl肯定會幫助它。

+1

您也可以使用流上下文爲fopen包裝器設置標題,否定捲曲。此外,OP不需要任何頭文件。 – 2010-01-25 12:19:23

+0

對不起,但什麼是「OP」? – Kirzilla 2010-01-25 12:26:06

+0

原始海報。我第二次發表評論,你很少需要使用捲曲。 HTTP包裝器可以讓你做任何事情。 http://docs.php.net/manual/en/context.http.php – 2010-01-25 15:18:50

相關問題