user220755
user220755

Reputation: 4446

Printing rss using PHP?

I am trying to use an rss feed from a domain that does not have a crossdomain file and because of that I am going to use a web service in the middle where I will be just getting the rss feed from a url (let's say the url is: www.example.com/feed) and then just print it to a page.

The service would work like: www.mywebservice.com/feed.php?word=something) and that will just go print the rss feed for: www.example.com/feed&q=word).

I used:

<?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;

?>

But this did not work, it gives me (SYSTEM ERROR: we're sorry but a serious error has occurred in the system). I am on shared hosting Any help?

Upvotes: 0

Views: 197

Answers (5)

user220755
user220755

Reputation: 4446

So at the end I ended up doing this:

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

I hope this is considered as an answer not an edit (if an edit please tell me so I can just delete this answer and edit the post)

Upvotes: 0

Gordon
Gordon

Reputation: 316969

The readfile function reads a file and writes it to the output buffer.

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

A URL can be used as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename. See the List of Supported Protocols/Wrappers for links to information about what abilities the various wrappers have, notes on their usage, and information on any predefined variables they may provide.

If you need to do anything with the XML, use one of PHP's many XML libraries, preferably DOM, but there is also SimpleXml or XMLReader. As an alternative, you could use Zend_Feed from the Zend Framework as a standalone component to work with the RSS feed.

If you cannot enable allow_url_fopen on your server, try cURL like Matchu suggested or go with Artefacto's suggestion.

Upvotes: 2

Matchu
Matchu

Reputation: 85794

Since you say you can't do the fancy URL-file-opening shortcuts due to server restrictions, you will need to use PHP's cURL module to send an HTTP request.

Upvotes: 1

Artefacto
Artefacto

Reputation: 97825

Consider doing this with mod_rewrite (using the P flag) or setting up a reverse proxy with ProxyPass.

Upvotes: 1

DrColossos
DrColossos

Reputation: 12998

If you want to also parse XML and process it further, be sure to look into SimpleXML. Let's you parse and manipulate the feed.

Upvotes: 0

Related Questions