LECTEUR DE FIL RSS (XML) SIMPLE EN UN SEUL FICHIER SOURCE.
lumesh
Messages postés564Date d'inscriptionjeudi 21 février 2002StatutMembreDernière intervention 7 novembre 2008
-
26 mars 2004 à 04:50
ennery
Messages postés39Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention27 octobre 2008
-
20 janv. 2008 à 03:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
en php4 : echo $channel["_ELEMENTS"] ; me renvoie bien Array
tandis qu'en php5 rien
GREGGRAPH
Messages postés62Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 avril 2010 20 janv. 2008 à 01:32
Hello,
je suis en sous PHP5
mon erreur provenait de l'adresse du flux RSS que j'avais mal paramétré
vérifie la ligne:
if (!$rssurl ) $rssurl =" "
ennery
Messages postés39Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention27 octobre 2008 20 janv. 2008 à 01:10
Salut,
Marche parfaitement en php4, mais en php5 j'ai l'erreur comme GREGGRAPH "Invalid argument supplied for foreach()"
comment résoudre svp ?
Shinji49
Messages postés18Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention25 juin 2009 27 déc. 2007 à 15:02
Salut Greggraph. Vas voir du coté de la fonction utf8_decode() dans la doc php !
GREGGRAPH
Messages postés62Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 avril 2010 27 déc. 2007 à 06:04
Désolé pour le déranement, mon PB est résolu, j'ai juste une petite erreur avec les accents etlas caractères spéciaux. J'ai essayé la méthode décrite plus haut, mais ça ne fonctionne pas!!!
Merci tout de même pour le code, il est nickel !
GREGGRAPH
Messages postés62Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 avril 2010 27 déc. 2007 à 05:17
Bonjour,
J'obtiens cette erreur, est ce parce que je suis en PHP5?
Warning: Invalid argument supplied for foreach() in /mnt/w0205/d28/s22/b02c1021/www/marchwoodz.com/test_rss.php on line 72
Warning: Invalid argument supplied for foreach() in /mnt/w0205/d28/s22/b02c1021/www/marchwoodz.com/test_rss.php on line 81
Web:
Est ce qu'il y a quelque chose à modifier?
Merci d'avance pour votre réponse
Shinji49
Messages postés18Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention25 juin 2009 25 déc. 2007 à 21:27
Bonjour,
Cherchant à développer une parseur de fichiers XML. Je me documente et épluche des scripts déjà existants. Et je suis tombé sur cette source ! Qui ma bien sur ouverte une nouvelle porte... Je doit bien avouer que la class n'est pas clair du tout bien qu'elle fasse bien son travail ! En épluchant la documentation, ce n'est pas plus compréhensible et j'ai remarqué que des bouts de code de la classe étaient tirés directement de la doc php. Est ce que son auteur sait ce que fait son code à chaque ligne ?
Bref, je vous apporte un petit bout de code concernant la détermination du charset car je trouve la methode indiquée un peu bourin... lol
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 18 déc. 2007 à 16:03
Bon,
1) Remet le source dans le fichier, pour éviter des erreurs supplémentaires
2) essaye plusieurs sources RSS
3) Vérifie la version de ton php (fonction phpinfo()), demande conseil pour savoir si il ne te manque pas un module dans ton php. Vérifie la version de ton PHP par rapport à l'analyseur syntaxique XML et le Charset de la source RSS
4) essaye chez un autre hébergeur avec une autre version de PHP
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 17 déc. 2007 à 19:14
enfin pas tout a fait au meme maintenant ca me dit :
Notice: Undefined index: rssurl in C:\Program Files\EasyPHP 2.0b1\www\essai php\script_espace_membres\filrss.php on line 51
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 17 déc. 2007 à 18:06
euh je sais pas si c'est important mais j'appelle ton fichier en include dans une autre page php...
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 17 déc. 2007 à 18:04
ca revient au meme
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 17 déc. 2007 à 17:56
Essaye $_GET au lieu de $HTTP_GET_VARS
Pierre
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 17 déc. 2007 à 17:39
merci itcom3
j'ai bien modifié le code mais ca me renvoi une erreur plus haut
Notice: Undefined variable: HTTP_GET_VARS in C:\Program Files\EasyPHP 2.0b1\www\essai php\script_espace_membres\filrss.php on line 51
Soit dans le source vous forcez un site (Ligne 69) :
if (!$rssurl ) $rssurl = "http://toto.com/fluxrss.xml";
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 17 déc. 2007 à 16:52
euh... ca a l'air d'etre bien cette source... euh... mais on la met ou l'adresse du flux? quand on genere pas le flux nous meme bien sur!! j'ai jamais travailler avec les flux c'est ma premiere fois :D
haflinger2
Messages postés5Date d'inscriptionmardi 18 juillet 2006StatutMembreDernière intervention 2 février 2008 2 déc. 2007 à 17:03
salut
merci bc !
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 2 déc. 2007 à 11:27
Des erreurs sur le site de démo.
Sympa, simple et rapide la source.
8/10.
Bonne continuation ;)
cs_benj3838
Messages postés5Date d'inscriptionmercredi 11 janvier 2006StatutMembreDernière intervention20 juin 2007 20 juin 2007 à 12:05
Effectivement mitchoumy j'ai déjà créer un code bien mieu qui permet d'écrire les nex directement dur le site avec une police adaptée la couleur que je veux et la disposition que je veux. C'est pas très dur l'écriture dans les fichiers html en php !
sur ceux a++
et bonne continuation.
BEnj3838
mitchoumy
Messages postés8Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention22 mai 2006 20 juin 2007 à 10:42
Une derniere demande ...
J'ai un fil qui est compressé en GZIP comment dois-je faire pour l'exploiter ?
Car le script tel qu'il est proposé n'a pas l'air d'avoir prévu cette eventualité...
Sachant que j'ai deja echanger les instructions fopen pour gzopen , feof pour gzeof , fgets pour gzgets et fclose pour gzclose.
En attendant vos réponses...
Merci encore.
mitchoumy
Messages postés8Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention22 mai 2006 20 juin 2007 à 10:38
Par contre j'ai un probleme pour lire les flux provenant d'url du type :
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\test\index.php on line 74
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\test\index.php on line 74
Et les 2 derniers warning sont répétés indéfiniment...
Je me doute que c'est parce que le lien ne pointe pas directement vers un fichier *.xml mais y aurait-il une solution ?
Merci !
mitchoumy
Messages postés8Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention22 mai 2006 20 juin 2007 à 10:28
Salut Benj3838,
j'ai eu moi aussi cette erreur...
La seule solution que j'ai trouvé est la suivante:
Le script réclamant une valeur pour ces variables je lui en ai donné lol
j'ai rajouté $data =""; et $news =""; ici :
$rssurl = "test.xml";
$data ="";
$news ="";
// récupération du fichier par paquets de 4096
$fp = gzopen($rssurl, "r");
Et j'ai supprimé ces 2 lignes :
// recupération de l' adresse du RSS avec le paramètre rssurl
$rssurl = $HTTP_GET_VARS["rssurl"];
Et impec lol !
Mais je pense que j'arrive pas un peu tard...
cs_benj3838
Messages postés5Date d'inscriptionmercredi 11 janvier 2006StatutMembreDernière intervention20 juin 2007 15 avril 2007 à 19:26
Salut
Si tu veu reproduire l'erreur
prend nimporte quel easy php
et ce code ou j'ai déjà modifié :
$item[_NAME] en $item["_NAME"]la même chose pour les
$item[_DATA]
je te le copie ci dessous :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<?php
/////////////////////////////////////////////////////////////////////////////////
// PHPRSSReader.php - d'après HTML Reader par Jorge Solis
// traduit et simplifié par Pierre Rouarch pour tenir en un fichier
////////////////////////////////////////////////////////////////////////////////
class xml {
var $parser;
function parse($xmlstring){
$this->parser = xml_parser_create();
xml_set_object($this->parser, $this);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
function tag_open($parser, $tag, $attributes){
// creation d'un nouveau node...
$node = array();
$node["_NAME"] = $tag;
foreach ($attributes as $key => $value) {
$node[$key] = $value;
}
$node["_DATA"] = "";
$node["_ELEMENTS"] = array();
// ajouter le nouveau node à la fin de la pile de node
array_push($this->node_stack, $node);
}
function cdata($parser, $cdata){
// ajouter les données au dernier node de la pile
$lastnode = count($this->node_stack);
$this->node_stack[$lastnode-1]["_DATA"] .= $cdata;
}
function tag_close($parser, $tag){
// suppression de la pile
$node = array_pop($this->node_stack);
$node["_DATA"] = trim($node["_DATA"]);
// and ajout comme élément à la fin de la pile...
$lastnode = count($this->node_stack);
array_push($this->node_stack[$lastnode-1]["_ELEMENTS"], $node);
}
} // end of class xml
//Récupération de certaines données du RSS (Voir les specifications rss 0.91, 0.92 et 2.0)
////// Récupération entête de channel /////////////////////////////////////////////////////////
foreach ($channel["_ELEMENTS"] as $item){
// suppression des antislashs
if($item["_NAME"]=="title") $base_name=stripslashes($item["_DATA"]);
if($item["_NAME"]=="link") $base_url=stripslashes($item["_DATA"]);
if($item["_NAME"]=="description") $base_desc=stripslashes($item["_DATA"]);
}
$base = " Web: $base_name
$base_desc
";
/////////////////////////////////////////////////////////////////////////
////////// Récupération de chaque Item --> titre, adresse url, date de publication, description //////////////////////////////////////////////////////
foreach ($channel["_ELEMENTS"] as $item){
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 15 avril 2007 à 19:22
Bon si c'est seulement des warnings va pour le @ bien que ce ne soit pas très propre. ;-(
J'avoue que je ne vois d'où vient le pb car je n'arrive pas à reproduire cette erreur.
cs_benj3838
Messages postés5Date d'inscriptionmercredi 11 janvier 2006StatutMembreDernière intervention20 juin 2007 15 avril 2007 à 11:18
Salut,
J'ai tester avec la dernière vertion d'easy php qui est en php 5 et ça me donne les mêmes erreures.
C'est une vertion beta mais je pense que vu que j'ai exactement les mêmes erreures c'est pas le fait qu'elle soit en beta qui me donne ces erreurs.
En même temps je pense que je vais cacher ces messages d'erreur avec un @ car le code a l'aire de marcher très bien a part l'affichage de ces messages.
merci encore.
BEnj3838
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 13 avril 2007 à 00:58
C'est peut être un pb d'étendue de variable si tu as mis le source dans une fonction où que ta version de PHP est inféfieure à 4
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 12 avril 2007 à 07:07
Bonjour,
Est-ce que tu n'aurais pas virfer les "$" des noms de variables par hasard ?
A+
Pierre
cs_benj3838
Messages postés5Date d'inscriptionmercredi 11 janvier 2006StatutMembreDernière intervention20 juin 2007 9 avril 2007 à 15:40
Salut a tous et merci dans un premier temps pour cette source interessante si mes quelques problèmes sont résolus.
Effectivement, j'ai quelques erreures :
Notice: Undefined variable: HTTP_GET_VARS in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 63
Notice: Undefined variable: data in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 73
Notice: Undefined variable: news in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 105
HELP !!
et merci encore
benj3838
wam666
Messages postés1Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention24 septembre 2006 24 sept. 2006 à 18:07
Excellente source!!!
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 17 août 2006 à 10:37
Tu peux essayer ceci :
/ Il faut tout d'abord récupérer le charset dans le flux XML:
// et se positionner sur encoding
jpf01
Messages postés1Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention17 août 2006 17 août 2006 à 07:11
Fichier tres utile pour un amateur novice en RSS.
Son installation ne m'a pose aucun probleme. Merci à l'artiste.
Une question cependant. En essayant d'afficher les news de GOOGLE en français, le fichier transforme les accents...par des signes.
Que dois-je modifier pour que les accents soient compris?
Merci d'avance. Jean-Pierre
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 23 juin 2006 à 04:32
Je viens de mettre à jour PHP et un gros problème survient à l'affichage de ce code chez moi : Une opération non conforme !
J'ai migré vers PHP 4.4.2 (avant j'avais PHP 4.4.1)
Quelqu'un aurait-il une explication à cela ?
Merci
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 12 mai 2006 à 03:29
Sympa, les wxdeveloppeurs te remercient. 10/10
pouda
Messages postés264Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention27 octobre 2014 18 janv. 2006 à 22:08
super efficace !! 10/10 source bien commenté vraiment top...
romalafrite
Messages postés106Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention21 octobre 2022 26 oct. 2005 à 14:16
C'est... original
Notice: Undefined index: rssurl in c:\program files\easyphp1-7\www\rss\index.php on line 63
Warning: fopen(http://www.u-blog.net/itcom3/rss): failed to open stream: Bad file descriptor in c:\program files\easyphp1-7\www\rss\index.php on line 72
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Notice: Undefined variable: data in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
aysoon
Messages postés4Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention 6 juin 2005 6 juin 2005 à 09:07
Bonjour,
Sauriez-vous comment combiner plusieurs flux rss en les classant par ordre décroissant de date de publication??
Sinon bravo pour votre source fort sympathique.
aysoon.
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 19 mai 2005 à 19:52
Si tu veux gérer plusieurs charsets il existe une classe PHP permettant de transformer
de l'UTF-8 dans d'autres encodages et inversement :
larion
Messages postés140Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention21 juillet 2005 19 mai 2005 à 18:43
Merci pour la reponse.
J'ai omis de dire que j'affichais plusieurs RSS sur la même page.
Tous sont au bon 'charset' sauf un (charset="UTF-8").
Cependant j'ai dans ton code la détection.
Je pense qu'en utilisant la fonction utf8_decode($data) je devrai arriver à mes fins.
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 19 mai 2005 à 18:11
// Il faut tout d'abord récupérer le charset dans le flux XML:
// et se positionner sur encoding
larion
Messages postés140Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention21 juillet 2005 19 mai 2005 à 13:38
Bonjour,
Je rencontre un problème : pour certain flux rss, les caractères accentués ne s'affichent pas correctement.
Exemple de flux : http://www.blue-hardware.com/rss.xml Je pense que cela viens de la première ligne du flux : <?xml version="1.0" encoding="UTF-8"?>
Comment détécter et résoudre ce problème automatiquement ?
Cordialement, Larion
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 17 mai 2005 à 17:51
Bonjour,
Je pense que c'est parcequ'il manque des guillemets ou des simples quotes à certains endroits.
(même si cela marche la plupart du temps)
Tu peux par exemple changer les $item[_NAME] en $item['_NAME']ou $item["_NAME"]la même chose pour les
$item[_DATA]
Cordialement
Pierre
jaristote
Messages postés6Date d'inscriptionlundi 25 octobre 2004StatutMembreDernière intervention 7 juin 2005 17 mai 2005 à 12:36
Bonjour
J'ai l'erreur suivante:
Notice: Use of undefined constant _NAME - assumed '_NAME'
Notice: Use of undefined constant _DATA - assumed '_DATA'
Un pb de déclaration? merci de votre aide.
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 10 janv. 2005 à 15:55
Merci encore
Pierre
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 10 janv. 2005 à 14:29
OriOn : je suis d'accord :p
moi elle me plait vraument trop cette source !
10/10 ça le mérite
Bien joué pierre, tres bon travail
cs_OriOn
Messages postés822Date d'inscriptionvendredi 25 mai 2001StatutModérateurDernière intervention 1 août 2014 5 oct. 2004 à 21:14
Pour une fois qu'il y a une source intéressante sur phpcs :) (non je suis pas mauvaise langue :p)
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 5 oct. 2004 à 18:28
Merci pour les encouragements,
Pierre
cs_NiK
Messages postés17Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention22 avril 2004 4 oct. 2004 à 20:56
Moi je trouve le système de feedRSS très interressant, et ton reader est fort sympathique et on est pas obliger de l'utiliser dans un Blog...
cs_OriOn
Messages postés822Date d'inscriptionvendredi 25 mai 2001StatutModérateurDernière intervention 1 août 2014 6 avril 2004 à 09:09
Sablotron point de vue performance à éviter quand même :)
ADPro22
Messages postés126Date d'inscriptionmercredi 18 juillet 2001StatutMembreDernière intervention27 octobre 2004 5 avril 2004 à 22:45
Ok si vous ne disposez pas de de processeur xslt là où est hébergé votre site.
Mais sinon, il me semble plus simple d'écrire une feuille de style xslt et de la processer ensuite avec sablotron, dom, xsltproc....
cs_OriOn
Messages postés822Date d'inscriptionvendredi 25 mai 2001StatutModérateurDernière intervention 1 août 2014 26 mars 2004 à 21:54
Les blogs ça fait plus de 5 ans que ça existe aux US.
Et en france c'était simplement une page de news.
On a juste changé le nom comme on le fait pour quoi que ce soit aujourd'hui en France.
itcom3
Messages postés39Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention17 septembre 2007 26 mars 2004 à 08:43
J'en conviens, je suis un peu fashion victim.
D'un autre côté le phénomène Blog, Wiki, push, feedRSS et autres partages et syndications de données donne un petit coup de frais au web en permettant notamment à des non techniciens d'avoir une présence sur le Net.
A+
Pierre
lumesh
Messages postés564Date d'inscriptionjeudi 21 février 2002StatutMembreDernière intervention 7 novembre 2008 26 mars 2004 à 04:50
mais c koi cette maladie des blogs ?! depuis un ptit moment on en voit partout c marrant qd meme comme si il y avait un appel a la populos pour utiliser des blogs.
un peu comme le XML ki na rien de specialement necessaire, mais tt le monde maintenant en colle pour tout et rien. c vraiment bizare. .....
ou alors c pr faire comme tt le monde enfin je ne pige pas cette proliferation de blogs et surtout lutilisation massive d'XML ki ne permet pas non plus de faire du stockage massif dinformations ...
enfin bon ...
20 janv. 2008 à 03:54
je pense que le probleme est ailleurs parce que cela fonctionne sur php4
if (!$rssurl ) $rssurl = "http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml";
en php4 : echo $channel["_ELEMENTS"] ; me renvoie bien Array
tandis qu'en php5 rien
20 janv. 2008 à 01:32
je suis en sous PHP5
mon erreur provenait de l'adresse du flux RSS que j'avais mal paramétré
vérifie la ligne:
if (!$rssurl ) $rssurl =" "
20 janv. 2008 à 01:10
Marche parfaitement en php4, mais en php5 j'ai l'erreur comme GREGGRAPH "Invalid argument supplied for foreach()"
comment résoudre svp ?
27 déc. 2007 à 15:02
27 déc. 2007 à 06:04
Merci tout de même pour le code, il est nickel !
27 déc. 2007 à 05:17
J'obtiens cette erreur, est ce parce que je suis en PHP5?
Warning: Invalid argument supplied for foreach() in /mnt/w0205/d28/s22/b02c1021/www/marchwoodz.com/test_rss.php on line 72
Warning: Invalid argument supplied for foreach() in /mnt/w0205/d28/s22/b02c1021/www/marchwoodz.com/test_rss.php on line 81
Web:
Est ce qu'il y a quelque chose à modifier?
Merci d'avance pour votre réponse
25 déc. 2007 à 21:27
Cherchant à développer une parseur de fichiers XML. Je me documente et épluche des scripts déjà existants. Et je suis tombé sur cette source ! Qui ma bien sur ouverte une nouvelle porte... Je doit bien avouer que la class n'est pas clair du tout bien qu'elle fasse bien son travail ! En épluchant la documentation, ce n'est pas plus compréhensible et j'ai remarqué que des bouts de code de la classe étaient tirés directement de la doc php. Est ce que son auteur sait ce que fait son code à chaque ligne ?
Bref, je vous apporte un petit bout de code concernant la détermination du charset car je trouve la methode indiquée un peu bourin... lol
<?
$motif_charset ='#encoding=("|\'?)([[:alnum:]-]{3,15})("|\')?#i';
preg_match($motif_charset,$data,$charset);
if($charset[1] !='')$charset = $charset[2];
else $charset ='iso-8859-15';
?>
Cordialement.
18 déc. 2007 à 16:03
1) Remet le source dans le fichier, pour éviter des erreurs supplémentaires
2) essaye plusieurs sources RSS
3) Vérifie la version de ton php (fonction phpinfo()), demande conseil pour savoir si il ne te manque pas un module dans ton php. Vérifie la version de ton PHP par rapport à l'analyseur syntaxique XML et le Charset de la source RSS
4) essaye chez un autre hébergeur avec une autre version de PHP
17 déc. 2007 à 19:14
Notice: Undefined index: rssurl in C:\Program Files\EasyPHP 2.0b1\www\essai php\script_espace_membres\filrss.php on line 51
17 déc. 2007 à 18:06
17 déc. 2007 à 18:04
17 déc. 2007 à 17:56
Pierre
17 déc. 2007 à 17:39
j'ai bien modifié le code mais ca me renvoi une erreur plus haut
Notice: Undefined variable: HTTP_GET_VARS in C:\Program Files\EasyPHP 2.0b1\www\essai php\script_espace_membres\filrss.php on line 51
moi j'ai fait ca :
$rssurl = $HTTP_GET_VARS["rssurl"];
//////////////////////////////////////////////////////////////////////////////////////////////////
//Modifiez ici pour mettre l'adresse URL de votre RSS au cas ou aucun argument n'est passé:
// exemple :
// http://www.votresite.com/PHPRSSReader.php?rssurl=http://www.votresite.com/votrefichierrss
/////////////////////////////////////////////////////////////////////////////////////////////
if (!$rssurl ) $rssurl = "http://www.lemonde.fr/rss/sequence/0,2-3210,1-0,0.xml";
merci
17 déc. 2007 à 17:08
C'est marqué dans les commentaires et dans le source lui même.
Soit vous passez le paramètre dans l'URL du lecteur :
http://www.monsite.com/PHPRSSReader.php?rssurl=http://toto.com/fluxrss.xml
Soit dans le source vous forcez un site (Ligne 69) :
if (!$rssurl ) $rssurl = "http://toto.com/fluxrss.xml";
17 déc. 2007 à 16:52
2 déc. 2007 à 17:03
merci bc !
2 déc. 2007 à 11:27
//////////////////////////////////
$nbnews=5;
$ncount=0;
foreach ($channel["_ELEMENTS"] as $item) {
if (($item[_NAME]=="item") and ($ncount < $nbnews) ) {
// suppression des antislashs
foreach ($item["_ELEMENTS"] as $tag){
if($tag["_NAME"]=="title") $news_title=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="link") $news_url=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="pubDate") $news_pubDate=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="description") $news_desc=stripslashes($tag[_DATA]);
}
$ncount++;
$news .= "$news_pubDate
$news_title
$news_desc
$news_url<hr>
";
}
}
//////
1 déc. 2007 à 17:46
merci
C'est à dire un compteur ?
peut tu me mettre le code à insérer ?
je suis un novice
hf
1 déc. 2007 à 08:08
foreach ($channel["_ELEMENTS"] as $item){
et sortir si > 5
1 déc. 2007 à 01:24
comment limiter le nombre d'élément ?
cad mettre juste 5 titres d'article par exemple au lieu de tout ceux du flux RSS ?
merci
9 août 2007 à 13:05
Sympa, simple et rapide la source.
8/10.
Bonne continuation ;)
20 juin 2007 à 12:05
sur ceux a++
et bonne continuation.
BEnj3838
20 juin 2007 à 10:42
J'ai un fil qui est compressé en GZIP comment dois-je faire pour l'exploiter ?
Car le script tel qu'il est proposé n'a pas l'air d'avoir prévu cette eventualité...
Sachant que j'ai deja echanger les instructions fopen pour gzopen , feof pour gzeof , fgets pour gzgets et fclose pour gzclose.
En attendant vos réponses...
Merci encore.
20 juin 2007 à 10:38
http://www.exemple.com/rss.php?id=categorie&lib=type
J'ai une erreur du type :
Warning: fopen(http://www.exemple.com/rss.php?id=categorie&lib=type): failed to open stream: Bad file descriptor in c:\program files\easyphp1-8\www\test\index.php on line 73
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\test\index.php on line 74
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\test\index.php on line 74
Et les 2 derniers warning sont répétés indéfiniment...
Je me doute que c'est parce que le lien ne pointe pas directement vers un fichier *.xml mais y aurait-il une solution ?
Merci !
20 juin 2007 à 10:28
j'ai eu moi aussi cette erreur...
La seule solution que j'ai trouvé est la suivante:
Le script réclamant une valeur pour ces variables je lui en ai donné lol
j'ai rajouté $data =""; et $news =""; ici :
$rssurl = "test.xml";
$data ="";
$news ="";
// récupération du fichier par paquets de 4096
$fp = gzopen($rssurl, "r");
Et j'ai supprimé ces 2 lignes :
// recupération de l' adresse du RSS avec le paramètre rssurl
$rssurl = $HTTP_GET_VARS["rssurl"];
Et impec lol !
Mais je pense que j'arrive pas un peu tard...
15 avril 2007 à 19:26
Si tu veu reproduire l'erreur
prend nimporte quel easy php
et ce code ou j'ai déjà modifié :
$item[_NAME] en $item["_NAME"]la même chose pour les
$item[_DATA]
je te le copie ci dessous :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<?php
/////////////////////////////////////////////////////////////////////////////////
// PHPRSSReader.php - d'après HTML Reader par Jorge Solis
// traduit et simplifié par Pierre Rouarch pour tenir en un fichier
////////////////////////////////////////////////////////////////////////////////
class xml {
var $parser;
function parse($xmlstring){
$this->parser = xml_parser_create();
xml_set_object($this->parser, $this);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
// Initialisation
$this->node_stack = array();
$this->tag_open(null, "root", array());
xml_parse($this->parser, $xmlstring);
xml_parser_free($this->parser);
$rnode = array_pop($this->node_stack);
return($rnode);
}
function tag_open($parser, $tag, $attributes){
// creation d'un nouveau node...
$node = array();
$node["_NAME"] = $tag;
foreach ($attributes as $key => $value) {
$node[$key] = $value;
}
$node["_DATA"] = "";
$node["_ELEMENTS"] = array();
// ajouter le nouveau node à la fin de la pile de node
array_push($this->node_stack, $node);
}
function cdata($parser, $cdata){
// ajouter les données au dernier node de la pile
$lastnode = count($this->node_stack);
$this->node_stack[$lastnode-1]["_DATA"] .= $cdata;
}
function tag_close($parser, $tag){
// suppression de la pile
$node = array_pop($this->node_stack);
$node["_DATA"] = trim($node["_DATA"]);
// and ajout comme élément à la fin de la pile...
$lastnode = count($this->node_stack);
array_push($this->node_stack[$lastnode-1]["_ELEMENTS"], $node);
}
} // end of class xml
// recupération de l' adresse du RSS avec le paramètre rssurl
$rssurl = $HTTP_GET_VARS["rssurl"];
//////////////////////////////////////////////////////////////////////////////////////////////////
//Modifiez ici pour mettre l'adresse URL de votre RSS au cas ou aucun argument n'est passé:
// exemple :
// http://www.votresite.com/PHPRSSReader.php?rssurl=http://www.votresite.com/votrefichierrss
/////////////////////////////////////////////////////////////////////////////////////////////
if (!$rssurl ) $rssurl = "http://test-news-site.ublog.com/un_blog_de_test_pour_fair/rss.xml";
// récupération du fichier par paquets de 4096
$fp = fopen($rssurl, "r");
while (!feof ($fp)) $data .= fgets($fp, 4096);
fclose ($fp);
$initPos = strpos($data, "<channel>"); // Saut de l'entête
//parse les données
$xml_parser = new xml();
$data = substr($data, $initPos);
$root_node = $xml_parser->parse($data);
$channel = array_shift($root_node["_ELEMENTS"]);
//Récupération de certaines données du RSS (Voir les specifications rss 0.91, 0.92 et 2.0)
////// Récupération entête de channel /////////////////////////////////////////////////////////
foreach ($channel["_ELEMENTS"] as $item){
// suppression des antislashs
if($item["_NAME"]=="title") $base_name=stripslashes($item["_DATA"]);
if($item["_NAME"]=="link") $base_url=stripslashes($item["_DATA"]);
if($item["_NAME"]=="description") $base_desc=stripslashes($item["_DATA"]);
}
$base = " Web: $base_name
$base_desc
";
/////////////////////////////////////////////////////////////////////////
////////// Récupération de chaque Item --> titre, adresse url, date de publication, description //////////////////////////////////////////////////////
foreach ($channel["_ELEMENTS"] as $item){
if($item["_NAME"] == "item") {
// suppression des antislashs
foreach ($item["_ELEMENTS"] as $tag){
if($tag["_NAME"]=="title") $news_title=stripslashes($tag["_DATA"]);
if($tag["_NAME"]=="link") $news_url=stripslashes($tag["_DATA"]);
if($tag["_NAME"]=="pubDate") $news_pubDate=stripslashes($tag["_DATA"]);
if($tag["_NAME"]=="description") $news_desc=stripslashes($tag["_DATA"]);
}
$news .= "$news_pubDate
$news_title
$news_desc
$news_url<hr>
";
}
}
////////////////////////////////////////////////////////////////////////////////
?>
<html>
<head>
<title>Sample RSS Reader in PHP</title>
<meta http-equiv ="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php print($news) ?>
<?php print($base) ?>
</html>
Voila a+ et merci encore pour ton aide
Benj3838
15 avril 2007 à 19:22
J'avoue que je ne vois d'où vient le pb car je n'arrive pas à reproduire cette erreur.
15 avril 2007 à 11:18
J'ai tester avec la dernière vertion d'easy php qui est en php 5 et ça me donne les mêmes erreures.
C'est une vertion beta mais je pense que vu que j'ai exactement les mêmes erreures c'est pas le fait qu'elle soit en beta qui me donne ces erreurs.
En même temps je pense que je vais cacher ces messages d'erreur avec un @ car le code a l'aire de marcher très bien a part l'affichage de ces messages.
merci encore.
BEnj3838
13 avril 2007 à 00:58
Voir de l'info ici :
http://www.php.net/manual/en/language.variables.scope.php
12 avril 2007 à 18:15
Voici la copie de chacunes de ces lignes :
L63 : $rssurl = $HTTP_GET_VARS["rssurl"];
L73: while (!feof ($fp)) $data .= fgets($fp, 4096);
L105 : $news .= "$news_pubDate
$news_title
$news_desc
$news_url<hr>
";
Merci d'avance
Benj3838
12 avril 2007 à 07:07
Est-ce que tu n'aurais pas virfer les "$" des noms de variables par hasard ?
A+
Pierre
9 avril 2007 à 15:40
Effectivement, j'ai quelques erreures :
Notice: Undefined variable: HTTP_GET_VARS in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 63
Notice: Undefined variable: data in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 73
Notice: Undefined variable: news in C:\Program Files\EasyPHP 2.0b1\www\site anticlimax\site\pages\news.php on line 105
HELP !!
et merci encore
benj3838
24 sept. 2006 à 18:07
17 août 2006 à 10:37
/ Il faut tout d'abord récupérer le charset dans le flux XML:
// et se positionner sur encoding
//après : (mligne 74)
fclose ($fp);
$charset ="";
$charset = strstr($data, "encoding");
$charset = strstr($charset, "=");
$charset = strstr($charset, """);
$charset = substr("$charset",1,30);
$charset = substr("$charset",0,strpos($charset,"""));
if ($charset=="") $charset="UTF-8"; // au choix si charset non trouvé ou iso-8859-1
// et avant :
$initPos = strpos($data, "<channel>"); // Saut de l'entête
// ensuite dans l'entête HTML
<title>Sample RSS Reader in PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset ?>">
</head>
A+
Pierre
17 août 2006 à 07:11
Son installation ne m'a pose aucun probleme. Merci à l'artiste.
Une question cependant. En essayant d'afficher les news de GOOGLE en français, le fichier transforme les accents...par des signes.
Que dois-je modifier pour que les accents soient compris?
Merci d'avance. Jean-Pierre
23 juin 2006 à 04:32
J'ai migré vers PHP 4.4.2 (avant j'avais PHP 4.4.1)
Quelqu'un aurait-il une explication à cela ?
Merci
12 mai 2006 à 03:29
18 janv. 2006 à 22:08
26 oct. 2005 à 14:16
Notice: Undefined index: rssurl in c:\program files\easyphp1-7\www\rss\index.php on line 63
Warning: fopen(http://www.u-blog.net/itcom3/rss): failed to open stream: Bad file descriptor in c:\program files\easyphp1-7\www\rss\index.php on line 72
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Notice: Undefined variable: data in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: feof(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
Warning: fgets(): supplied argument is not a valid stream resource in c:\program files\easyphp1-7\www\rss\index.php on line 73
6 juin 2005 à 09:07
Sauriez-vous comment combiner plusieurs flux rss en les classant par ordre décroissant de date de publication??
Sinon bravo pour votre source fort sympathique.
aysoon.
19 mai 2005 à 19:52
de l'UTF-8 dans d'autres encodages et inversement :
http://www.phpclasses.org/browse/package/1974.html
Cordialement
19 mai 2005 à 18:43
J'ai omis de dire que j'affichais plusieurs RSS sur la même page.
Tous sont au bon 'charset' sauf un (charset="UTF-8").
Cependant j'ai dans ton code la détection.
Je pense qu'en utilisant la fonction utf8_decode($data) je devrai arriver à mes fins.
19 mai 2005 à 18:11
// et se positionner sur encoding
//après : (mligne 74)
fclose ($fp);
$charset ="";
$charset = strstr($data, "encoding");
$charset = strstr($charset, "=");
$charset = strstr($charset, """);
$charset = substr("$charset",1,30);
$charset = substr("$charset",0,strpos($charset,"""));
if ($charset=="") $charset="UTF-8"; // au choix si charset non trouvé ou iso-8859-1
// et avant :
$initPos = strpos($data, "<channel>"); // Saut de l'entête
// ensuite dans l'entête HTML
<title>Sample RSS Reader in PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset ?>">
</head>
A+
Pierre
19 mai 2005 à 13:38
Je rencontre un problème : pour certain flux rss, les caractères accentués ne s'affichent pas correctement.
Exemple de flux : http://www.blue-hardware.com/rss.xml
Je pense que cela viens de la première ligne du flux : <?xml version="1.0" encoding="UTF-8"?>
Comment détécter et résoudre ce problème automatiquement ?
Cordialement, Larion
17 mai 2005 à 17:51
Je pense que c'est parcequ'il manque des guillemets ou des simples quotes à certains endroits.
(même si cela marche la plupart du temps)
Tu peux par exemple changer les $item[_NAME] en $item['_NAME']ou $item["_NAME"]la même chose pour les
$item[_DATA]
Cordialement
Pierre
17 mai 2005 à 12:36
J'ai l'erreur suivante:
Notice: Use of undefined constant _NAME - assumed '_NAME'
Notice: Use of undefined constant _DATA - assumed '_DATA'
Un pb de déclaration? merci de votre aide.
10 janv. 2005 à 15:55
Pierre
10 janv. 2005 à 14:29
moi elle me plait vraument trop cette source !
10/10 ça le mérite
Bien joué pierre, tres bon travail
5 oct. 2004 à 21:14
5 oct. 2004 à 18:28
Pierre
4 oct. 2004 à 20:56
6 avril 2004 à 09:09
5 avril 2004 à 22:45
Mais sinon, il me semble plus simple d'écrire une feuille de style xslt et de la processer ensuite avec sablotron, dom, xsltproc....
26 mars 2004 à 21:54
Et en france c'était simplement une page de news.
On a juste changé le nom comme on le fait pour quoi que ce soit aujourd'hui en France.
26 mars 2004 à 08:43
D'un autre côté le phénomène Blog, Wiki, push, feedRSS et autres partages et syndications de données donne un petit coup de frais au web en permettant notamment à des non techniciens d'avoir une présence sur le Net.
A+
Pierre
26 mars 2004 à 04:50
un peu comme le XML ki na rien de specialement necessaire, mais tt le monde maintenant en colle pour tout et rien. c vraiment bizare. .....
ou alors c pr faire comme tt le monde enfin je ne pige pas cette proliferation de blogs et surtout lutilisation massive d'XML ki ne permet pas non plus de faire du stockage massif dinformations ...
enfin bon ...