2010-01-25 3 views
1

Wordpress affiche un flux RSS au http://myurl.com/feed/rss/ mais bien sûr, il n'y a pas de fichier. J'écris un script pour lire et rendre le RSS, mais charger le "fichier" au format XML échoue, car il n'y a pas de fichier. Je vous écris:Comment charger le contenu d'un flux rss rendu par php?

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

Et je reçois cette erreur:

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

Même en utilisant file_get_contents me donne cette erreur:

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

Répondre

3

Le fichier est pas là parce que l'URL est redirigé , mais vous essayez d'y accéder en tant que fichier. En supposant que vous avez le gestionnaire fopen correctes (et tout le monde DOE), essayez d'ouvrir l'URL avec SimpleXML:

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

Cela ressemble à la meilleure solution, Merci. L'hôte de ce site Web dit: "L'accès au fichier URL est désactivé dans la configuration du serveur". Donc je me dispute avec ça maintenant. – Corey

+0

C'est étrange, je ne suis jamais tombé sur un hôte qui a désactivé les wrappers fopen –

+0

Bah, c'est pour le mieux. Aller à un forum de support WordPress et demander comment obtenir son RSS. Il y a certainement une fonction qui va le retourner pour vous, et cela n'encourra pas la pénalité de performance de gérer une requête HTTP supplémentaire. –

0

La meilleure façon est d'utiliser Curl (http://us2.php.net/manual/en/book.curl.php) pour le chargement du contenu externe parce que vous pouvez manipuler les en-têtes, etc., Par exemple, si mod_security est installé sur Apache, vous ne pourrez pas récupérer du contenu sans passer l'en-tête de l'agent utilisateur, mais Curl vous aidera certainement.

+1

Vous pouvez également définir des en-têtes avec des wrappers fopen à l'aide de contextes de flux, ce qui supprime le besoin de rouler. De plus, l'OP ne nécessite aucun en-tête. –

+0

Désolé, mais qu'est ce que c'est "OP"? – Kirzilla

+0

Affiche originale. Et je seconde ce commentaire, vous avez rarement besoin d'utiliser curl. L'encapsuleur HTTP vous permet de faire à peu près tout. http://docs.php.net/manual/fr/context.http.php –