使用PHP打印rss?

时间:2010-07-08 16:54:07

标签: php xml

我正在尝试使用来自没有跨域文件的域的RSS源,因此我将在中间使用Web服务,我将从URL获取rss源(让我们说网址是:www.example.com/feed),然后将其打印到页面。

该服务的工作方式如下:www.mywebservice.com/feed.php?word = something),只需打印rss Feed即可:www.example.com/feed&q=word).

我用过:

<?php

$word = $_GET["word"];

$ch=curl_init("http://example.com/feed.php?word=".$word."");

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

$data = curl_exec($ch);
curl_close($ch);

print $data;

?>

但这不起作用,它给了我(SYSTEM ERROR:我们很抱歉,但系统中发生了严重错误)。我在共享主机上 有什么帮助吗?

5 个答案:

答案 0 :(得分:2)

readfile函数读取文件并将其写入输出缓冲区。

readfile('http://example.com/feed.rss');
  

如果已启用fopen包装,则可以使用此函数将URL用作文件名。有关如何指定文件名的更多详细信息,请参阅fopen()。请参阅支持的协议/包装列表,以获取有关各种包装器具有哪些功能的信息的链接,使用说明以及它们可能提供的任何预定义变量的信息。

如果您需要对XML执行任何操作,请使用PHP's many XML libraries之一,最好是DOM,但也有SimpleXmlXMLReader。作为替代方案,您可以使用Zend_Feed from the Zend Framework作为独立组件来处理RSS提要。

如果您无法在服务器上启用allow_url_fopentry cURL like Matchu suggestedgo with Artefacto's suggestion

答案 1 :(得分:1)

考虑使用mod_rewrite(使用P标志)或使用ProxyPass设置反向代理来执行此操作。

答案 2 :(得分:1)

由于您说由于服务器限制而无法执行花哨的URL文件打开快捷方式,因此您需要使用PHP's cURL module来发送HTTP请求。

答案 3 :(得分:0)

如果您还要解析XML并进一步处理它,请务必查看SimpleXML。让我们解析并操纵Feed。

答案 4 :(得分:0)

所以最后我最终做到了这一点:

$word = $_GET["word"];

$url = "http://www.example.com/feed.php?q=".$word;

$curl = @curl_init ($url);

@curl_setopt ($curl, CURLOPT_HEADER, FALSE);
@curl_setopt ($curl, CURLOPT_RETURNTRANSFER, TRUE);
@curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, TRUE);
@curl_setopt ($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

$source = @curl_exec ($curl);
@curl_close ($curl);
print $source;

我希望这被视为答案而不是编辑(如果编辑请告诉我,我可以删除此答案并编辑帖子)