2011-11-22 52 views
1

我试图编写一个RSS提要,它将拉下一个提要并使用XMLReader(或DOMdocument)来提取可用标签列表。PHP cURL和file_get_contents给出了不同的结果?

我的主机没有启用file_get_contents,所以我把feed放到一个变量中,然后使用“从字符串加载”的方式来实例化我的XMLreader或DOMdocument(到目前为止我已经尝试了这两种方法)。

当我测试我的本地盒(我启用file_get_contents)我的脚本能够拉出XML标签。但是,当我使用cURL时,出现一系列错误。

我已经试过在使用html_entity_decode之后对UTF8进行编码。

我使用卷曲的选项有:

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

如果我抓住从我的浏览器进文本,并将其保存为我的箱子文件,然后我的脚本也能够识别标签。

使用cURL时出现的错误是解析错误。

所以我的问题是 - 我必须使用哪些设置与cURL才能解析RSS?

+0

你什么错误? –

+0

file_get_contents可能会忽略或透明地解决HTTP问题。 cURL不。因此,通过测试file_get_contents和cURL之间的差异,解决此问题的最佳方法很可能是。你已经尝试了什么?如果主机禁用基本的PHP函数 - 移动主机,则返回 – jmkeyes

+0

。 – 2011-11-22 06:46:07

回答

2

不要使用file_get_contents()作为远程文件,它非常缓慢,非常密集的cpu,并且不像curl具有的灵活性那样处理重定向,缓存,cookie等。

甚至比卷曲更好;更快,更灵活,更少的CPU密集使用fsocket ......还有很多PHP类,使得它死了简单的做到这一点,这里是我的最爱之一:

http://scripts.incutio.com/httpclient/

相关问题