Webmaster Hub: XML -> PHP sur un fichier avec des valeurs aux balises - Webmaster Hub

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

XML -> PHP sur un fichier avec des valeurs aux balises Noter : -----

#1 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 12:25

Bonjour,

Je voudrais parser un fichier XML (dispo ici http://lurvemag.tumblr.com/api/read) en PHP.

Habituellement je découpe les articles comme ceci :

$items = explode('<post>', $rawitems[0]);


Mon problème ici est que la balise <post> (qui délimite un article) contient des valeurs : <post id="89007972" url="...." .............>

J'ai donc essayé $items = explode('<post (.*) format="html">', $rawitems[0]); mais ça ne marche pas.

Une idée ??

Merci d'avance
0

#2 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 24 mars 2009 - 12:26

Si tu disposes de PHP5, je te conseille (vivement) d'utiliser SimpleXML, tu t'épargneras bien des soucis.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#3 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 12:35

Merci

Et sans PHP5 et SimpleXML ?
0

#4 L'utilisateur est hors-ligne   Dudu 

  • Groupe : Admin
  • Messages : 3 823
  • Inscrit(e) : 09-avril 05

Posté 24 mars 2009 - 12:42

Alors tu peux utiliser Magpie RSS ;)
0

#5 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 13:04

Et "a la main" ?
0

#6 L'utilisateur est hors-ligne   Dadou 

  • Light or Dark Side ?
  • Groupe : Fondateur
  • Messages : 3 244
  • Inscrit(e) : 29-avril 04
  • Genre:Homme
  • Localisation:13 rue Offenbach, Barentin

Posté 24 mars 2009 - 13:29

Pourquoi le faire à la main, quand une classe peut te le faire sans soucis
« Demander ne coûte qu’un instant d’embarras ; ne pas demander, c’est être embarrassé toute sa vie. » (Proverbe japonais)
- Mon petit site a moi
0

#7 L'utilisateur est hors-ligne   SStephane 

  • Groupe : Fondateur
  • Messages : 460
  • Inscrit(e) : 06-février 09
  • Genre:Homme
  • Localisation:Grabels

Posté 24 mars 2009 - 13:31

A la main c'est chiant, tu risques de refaire une classe qui existe déjà pour mapper ton XML en objet (ce que fait SimpleXML, l'autre je ne la connais pas), tu as une contrainte particulière à ce niveau ?
_AT_Montpellier
L'héroïsme, c'est la seule manière de devenir célèbre quand on a pas de talent (l'homme aux initiales douteuses)
Venez tester votre niveau de compétence en PHP :-)
0

#8 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 14:49

Ben SImpleXML marche pas sur mon serveur (fonction inconnue) et MagPie ben j'aime pas reprendre de scripts "déja fait" qui ne m'appartienne pas, quand je fais un site, je commence toujours de la page blanche
0

#9 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 24 mars 2009 - 14:55

Pour simplexml, essaye de renommer ta page en .php5.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#10 L'utilisateur est hors-ligne   Dadou 

  • Light or Dark Side ?
  • Groupe : Fondateur
  • Messages : 3 244
  • Inscrit(e) : 29-avril 04
  • Genre:Homme
  • Localisation:13 rue Offenbach, Barentin

Posté 24 mars 2009 - 14:56

Je n'aime pas trop non plus prendre des scripts tout fait, mais certaines classes soulagent quand même pas mal le boulot. Au pire tu la télécharge et tu regardes comment le parsing est fait
« Demander ne coûte qu’un instant d’embarras ; ne pas demander, c’est être embarrassé toute sa vie. » (Proverbe japonais)
- Mon petit site a moi
0

#11 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 15:09

Pour simplexml c'est bon j'ai la solution : je suis pas en PHP5 tout simplement, je pensais pourtant que c'était automatique chez OVH, mais bon vu que c'est pour un client de toute façon je préfere etre sur que mon code soit compatible ^^

Je vais regarde le parsing de magpie alors oui meme si bon aprés pour exploiter mon XML y'avais aucun soucie, juste le explode qui posait probleme
0

#12 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 24 mars 2009 - 15:12

Pour forcer ton serveur à interpréter tes pages avec une extension .php avec php5, tu peux rajouter cette ligne dans le .htaccess :
SetEnv PHP_VER 5

Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#13 L'utilisateur est hors-ligne   Dadou 

  • Light or Dark Side ?
  • Groupe : Fondateur
  • Messages : 3 244
  • Inscrit(e) : 29-avril 04
  • Genre:Homme
  • Localisation:13 rue Offenbach, Barentin

Posté 24 mars 2009 - 15:12

Chez OVH pour profiter du PHP5 il faut mettre au début du .htaccess à la racine du site :

SetEnv PHP_VER 5



Edit : Captain, le modo qui répond plus vite que son ombre :P
« Demander ne coûte qu’un instant d’embarras ; ne pas demander, c’est être embarrassé toute sa vie. » (Proverbe japonais)
- Mon petit site a moi
0

#14 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 15:27

C'est bon j'ai mon serveur mis en PHP5, SimpleXML me sort une phrase qui m'avance pas plus que le XML brut, et quand je regarde le guide de php.net y'a des flèches partout (php objet je suppose, chose a laquelle je ne comprend rien du tout).

Au final je pense que ça irais plus vite avec un explode ...


Et toute façon ça ne fonctionne pas

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found

Ce message a été modifié par slash31 - 24 mars 2009 - 15:36.

0

#15 L'utilisateur est hors-ligne   Dadou 

  • Light or Dark Side ?
  • Groupe : Fondateur
  • Messages : 3 244
  • Inscrit(e) : 29-avril 04
  • Genre:Homme
  • Localisation:13 rue Offenbach, Barentin

Posté 24 mars 2009 - 15:43

il va bien falloir s'y mettre un jour a la programmation objet, bientôt il n'y aura plus que cela. Surtout que la simpleXML permet une lecture de XML vraiment simplifiée. Je l'ai utilisé pour mettre en place un webservice et cela a été que du bonheur
« Demander ne coûte qu’un instant d’embarras ; ne pas demander, c’est être embarrassé toute sa vie. » (Proverbe japonais)
- Mon petit site a moi
0

#16 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 15:49

Ben j'ai essayé tous les codes proposés par php.net pour exploiter mon XML (en les adaptants a mes noms de balises bien sur) : aucun ne marche j'ai soit l'érreur ci dessous, soit rien ne s'affiche

Application :


$site = "http://lurvemag.tumblr.com/api/read";

$xml = new SimpleXMLElement($site, NULL, TRUE);
print_r($xml);

===========> Fonctionne est me donne tout le XML


$xml = new SimpleXMLElement($site, NULL, TRUE);
foreach ($xml->post as $post) { echo 'TEST<br />'; }

===========> Ne m'affiche rien

Ce message a été modifié par slash31 - 24 mars 2009 - 15:52.

0

#17 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 24 mars 2009 - 15:53

Tu es sûr que ton fichier XML est bien formé ? Arrives-tu à l'ouvrir dans un navigateur, par exemple ?
Edit : C'est normal, regarde ce que te donne le print_r ;)
Tu dois sûrement faire quelque chose du genre :
foreach($xml->posts->post as $post)

Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#18 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 15:56

Oui, en code pas en affichage. Ben il est assez bizare oui mais bon c'est un fichier XML d'un site externe destiné a être exploité (bien sur aucun parser fournis...). C'est bien ça le probleme ...

http://lurvemag.tumblr.com/api/read
0

#19 L'utilisateur est hors-ligne   Dadou 

  • Light or Dark Side ?
  • Groupe : Fondateur
  • Messages : 3 244
  • Inscrit(e) : 29-avril 04
  • Genre:Homme
  • Localisation:13 rue Offenbach, Barentin

Posté 24 mars 2009 - 16:01

Normal, la valeur $site doit être le contenu du xml et non pas l'url du xml

ou alors utilises
$xml = simplexml_load_file('test.xml')

« Demander ne coûte qu’un instant d’embarras ; ne pas demander, c’est être embarrassé toute sa vie. » (Proverbe japonais)
- Mon petit site a moi
0

#20 L'utilisateur est hors-ligne   slash31 

  • Groupe : Actif
  • Messages : 20
  • Inscrit(e) : 27-octobre 08

Posté 24 mars 2009 - 16:31

C'EST BON

$site = "http://.......................";

$xml = new SimpleXMLElement($site, NULL, TRUE);

foreach ($xml->posts->post as $post) {
echo $post->{'regular-title'}, '<br />';
}

merci pour votre aide
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)