Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2008, 17h59   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 57
Points : 13
Points : 13
Par défaut Lire un fichier XML à partir d'une URL

Bonjour,

En fait j'ai un code qui marche très bien quand le parametre de ma fonction (rssReader()) est un fichier xml ("fluxRss.xml") qui se trouve el local, en revanche quand le fichier xml se trouve dans une url ("http://unsite.com/rss/fluxRss.xml"), ca ne marche plus. Pourquoi?

Code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
//Recupération de flux RSS
function lit_xml($fichier,$item,$champs) {
   // on lit le fichier
   if($chaine = @implode("",@file($fichier))) {
      // on explode sur <item>
      $tmp = preg_split("^</?".$item.">^",$chaine);
      // pour chaque <item>
      for($i=1;$i<sizeof($tmp)-1;$i+=2)
         // on lit les champs demandés <champ>
         foreach($champs as $champ) {
            $tmp2 = preg_split("^</?".$champ.">^",$tmp[$i]);
            // on ajoute au tableau
            $tmp3[$i-1][] = @$tmp2[1];
         }
      // et on retourne le tableau
      return $tmp3;
   }
}
 
function rssReader($fileRSS) {
 
   $xml = lit_xml($fileRSS,"item",array("title","link"));
   foreach($xml as $row) {
   if (@$i < 11){
    $row[0] = str_replace('<![CDATA[', '', $row[0]);
    $row[0] = str_replace(']]>', '', $row[0]);
      $retour = @$retour.'<a href="'.$row[1].'" class="rss">'.$row[0].'</a><br/>';
       if (strlen($row[0])>47) {@$i = $i+2;}
      else {@$i++;}
      }
   }
   return $retour;
}
 
//Lecture d'un flux RSS
 
echo rssReader("http://unsite.com/rss/fluxRss.xml");//MARCHE PAS
echo rssReader("fluxRss.xml");//MARCHE
 
?>

Merci d'avance,
spaukensen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 18h45   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
L'usage d'un flux HTTP suppose que la fonctionnalité allow_url_fopen est à On (consulter la sortie de phpinfo). Mais quelque soit l'erreur vous ne la verrez pas apparaître en préfixant l'appel à file d'une arobase

A noter qu'il y a peut être des moyens plus appropriés au traitement d'un ficher XML (comme SimpleXML) ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2008, 10h07   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 57
Points : 13
Points : 13
Ok, merci pour ta réponse, je vais me renseigner sur SimpleXml
spaukensen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2008, 11h03   #4
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
Pour la lecture d'un flux RSS , je conseille le framework Zend et plus précisément la classe Zend_Feed_Rss

http://framework.zend.com/manual/fr/...uming-rss.html
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h10.


 
 
 
 
Partenaires

Hébergement Web