parseur php avec @implode, preg_split . Probleme pour adapter le code

parseur php avec @implode, preg_split . Probleme pour adapter le code - PHP - Programmation

Marsh Posté le 16-06-2009 à 03:04:20    

Bonjour,  
 
Je cherche a parser un fichier.
J'utilise un script (utilise pour le fil RSS du Figaro):
 

Code :
  1. function lit_rss($fichier,$objets) {
  2. // on lit tout le fichier
  3. if($chaine = @implode("",@file($fichier))) {
  4.  // on découpe la chaine obtenue en items
  5.  $tmp = preg_split("/<\/?"."item".">/",$chaine);
  6.  // pour chaque item
  7.  if (sizeof($tmp)-1 <= 9) {$j = sizeof($tmp)-1;}
  8.  else {$j = 9;}
  9.  for($z=1;$z<=$j;$z+=2)
  10.   // on lit chaque objet de l'item
  11.   foreach($objets as $objet) {
  12.    // on découpe la chaine pour obtenir le contenu de l'objet
  13.    $tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$z]);
  14.    // on ajoute le contenu de l'objet au tableau resultat
  15.    $resultat[$z-1][] = @$tmp2[1];
  16.   }
  17.  // on retourne le tableau resultat
  18.  return $resultat;
  19. }
  20. }


 
et l'appel de la fonction
 

Code :
  1. $rss = lit_rss("FICHIER.xml",array("Titre","description" ));
  2.  foreach($rss as $tab) {
  3.        
  4.  echo $tab[0];
  5.  echo $tab[1];
  6.  }


 
Le probleme c'est que je n'arrive pas a adapter la fonction lit_rss() a la specificite de mon fichier:
 
{"Categorie1":[{"Titre":"Titre n1","description":"numero 1 description"},{"Titre":"Titre n2","description":"numero 2 description"}],"hits":"1583","type":"categorie1","pages":80}
 
 
Je cherche donc a recuperer sous forme d'un tableau ou autre:
 
Titre n1, numero 1 description
Titre n2, numero 2 description
 
 
VOilou... SI quelqu'un avait une petite idee.. Ca m'aiderai bcp et m'eviterai de rester jusqu a 3h du mat sur mon pc :)
 
Cordialement,


Message édité par MatthieuFourcade le 16-06-2009 à 03:05:18

---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 16-06-2009 à 03:04:20   

Reply

Marsh Posté le 16-06-2009 à 18:15:07    

mon dieu, utilise un parseur, pas les expressions régulières [:vomi]

Reply

Marsh Posté le 16-06-2009 à 18:27:52    

un petit coup de xslt  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 16-06-2009 à 18:35:30    

utilise ca ; http://rssphp.net/ ou http://magpierss.sourceforge.net/


---------------

Reply

Marsh Posté le 16-06-2009 à 19:02:17    

merci pour ces reponses...
 
J'avoue que le parser RSS est pas terrible ...
 
Probleme de JSON c'est que je dois eviter toutes les fonctions get_file_content, fopen etc... Qui ne marche pas puisque je suis chez FREE.  
 
Le parser que j'ai mis au debut est le seul qui ne me met pas d'erreur
du type
 
[function.fopen]: failed to open stream: HTTP request failed!


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 16-06-2009 à 19:18:35    

Je rate peut etre quelques chose ? J'avoue ne pas etre tres tres bon en php.
 
J'ai essayé avec get_file_content, fopen, copy (pour d'avoir copier le fichier sur mon serveur) et j'ai a chaque fois une erreur du type
 
Warning: fopen(http://xxx.com/xxx) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/101...
 
 
Warning: get_file_content(http://xxx.com/xxx) [function.get_file_content]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/101...
 
Je précise que les serveurs FREE sont en php 4 donc pas de JSON_Decode ou autre...
 
Dit m'en plus NazzTazz.. Cordialement,


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 16-06-2009 à 19:45:40    

Ok effectivement c'est du JSON.
 
Bon, il y a partout des trucs pour decoder du JSON en Php4... Le probleme c'est que j'ai tjs ce message d'erreur:
 
Warning: fopen(http://xxx.com/xxx) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/101...
 
 
Warning: get_file_content(http://xxx.com/xxx) [function.get_file_content]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/101...
 
 
Quand j'essaie d'importer le fichier en question. Auriez-vous une idee pour contourner ca ?
 
J'imagine que je peux utiliser ca ?
 
# if($chaine = @implode("",@file($fichier)))
 
 
 
 
Cordialement


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 16-06-2009 à 21:30:11    

Nan mais c'est juste que free interdit le wrapper http:// pour les fonctions fopen ou file_get_contents [:petrus75]

Reply

Marsh Posté le 17-06-2009 à 01:19:53    

ok. il y a t il un moyen de contourner cette limitation ?


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 17-06-2009 à 01:51:48    

Ou plutot qu'elle est le moyen pour importer le fichier sur le serveur et faire mumuse apres dessus ? copy() ne marche pas... les fonctions ftp de php ?


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 17-06-2009 à 01:51:48   

Reply

Marsh Posté le 17-06-2009 à 10:41:24    

http://rssphp.net/ ou http://magpierss.sourceforge.net/
 
J ai essayé les deux mais bien evidement ca ne marche pas car ce n'est pas fait pour du JSON....


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 17-06-2009 à 11:00:36    

qd je dis tester, je suis aller voir s'il n'y avais pas des versions JSON :)
 
Pour resumer et etre clair:
 
Je cherche un parser JSON qui marche en PHP4 et qui evite les fonctions bloquées de FREE (fopen, get_file_content, ....).
 
Cordialement,


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 17-06-2009 à 11:25:38    

Entierement d'accord :)
 
Mais c'est une solution que je ne voulais envisager qu'en dernier recours.
 
Et je pense que je vais bien devoir m'y mettre :(
 
Merci d'avoir eclairé tout ca et de m'avoir permis de bien comprendre mon probleme dans cette histoire :)


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Marsh Posté le 17-06-2009 à 11:27:30    

Remarque: Je viens de trouver une solution:
 
http://docs.jquery.com/Ajax/jQuery.getJSON ca marche dans leur exemple avec un fichier json sur flickr... Il y a pu qu'a l'adapter :D


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed