Tutoriel Vidéo PHP : Parser un XML en PHP

Dans ce tutoriel vidéo nous verrons comment utiliser PHP avec cURL pour lire un site web distant (ici un flux RSS) et comment récupérer les données dans une variable sous forme de chaîne de caractère. Dans un second temps nous verrons comment parser un fichier XML pour récupérer les données que l'on souhaite afficher.

Cette technique nous permettra plus tard de voir l'utilisation de certaines API afin d'afficher sur son site les news de certains réseaux sociaux...


Télécharger la vidéo
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Les namespaces

Les namespaces
12m

Dans ce tutoriel vidéo vous apprendrez à utiliser les namespace ou...

API LastFM

API LastFM
35m

Dans ce tutoriel vidéo vous apprendrez comment utiliser l'API de...

49 commentaires
Ajouter un commentaire

fabounet Il y a 2 mois Répondre

Merci pour ce tuto super bien fait et utile!!

Est-il possible de ne récupérer qu'une partie du titre? En fait la structure du RSS que je souhaite récupérer possède les même mots dans le titre. Du coup j'aimerai récupérer que quelques char après l'apparution de ce mot dans le titre.

Encore merci! J'espère un jour avoir un aussi bon niveau pour pouvoir partager avec les autres

El garch Il y a 2 mois Répondre

comme Toujours, rien à dire.

Merci pour le grand travail et bonne continuation

grandoc Il y a 3 mois Répondre

Bonjour Jonathan
je rencontre le même problème que thankol (Mardi 24 Août 2010 à 10:30) qui n'a jamais obtenu de réponse. Pour rappel :
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Start tag expected, '<' not found in monsite/etc..... on line 7

line 7 : $xml = new simpleXMLElement($contenu);

une piste éventuelle à creuser
sinon félicitation pour le côté didactique de l'ensemble de ton oeuvre ;-)

Philippe

tobal Il y a 8 mois Répondre

Bonjour,

J'arrive à récupérer toutes les information du flux rss sauf celles concernant l'image:

Voici le début du rss:

SimpleXMLElement Object
(
[@attributes] => Array
(
[version] => 2.0
)

[channel] => SimpleXMLElement Object
(
[title] => Radio-Canada | Grands titres
[link] => http://www.radio-canada.ca/nouvelles/?ref=rss
[description] => SimpleXMLElement Object
(
)

[language] => fr-ca
[lastBuildDate] => Wed, 08 Jun 2011 17:10:00 EDT
[copyright] => Copyright: (C) Radio-Canada, http://www.radio-canada.ca/util/politiques/index.html #RSS
[docs] => http://www.radio-canada.ca/rss/
[image] => SimpleXMLElement Object
(
[title] => Radio-Canada | Grands titres
[url] => http://rss.radio-canada.ca/fils/images/src_144.gif
[link] => http://www.radio-canada.ca/rss
)

[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => #Santé - E. coli: un premier cas confirmé au Canada
[link] => http://www.radio-canada.ca/regions/Ontario/2011/06/08/010-premier-cas-ecoli-ontario.shtml
[guid] => http://www.radio-canada.ca/regions/Ontario/2011/06/08/010-premier-cas-ecoli-ontario.shtml
[pubDate] => Wed, 08 Jun 2011 15:30:00 EDT
[description] => SimpleXMLElement Object
(
)

[enclosure] => SimpleXMLElement Object
(
[@attributes] => Array
(
[type] => image/jpeg
[length] => 0
[url] => http://img.src.ca/2011/04/07/112x63/110407_00q05_ecoli-bacterie_2.jpg
)

)

)

J'ai utilisé l'expression suivante pour récupérer l'url de l'image :

$image = $actualite->enclosure[url];

Elle me donne l'url de l'image mais aussi le message d'erreur suivant :

Notice: Use of undefined constant url - assumed 'url' in I:\wamp\www\rss\international.php on line 33

Apparemment, l'expression n'est pas correcte !!!

Que dois-je faire exactement ?

Merci d'avance

Sent Il y a 10 mois Répondre

quel éditeur vous utilisez?

bob Il y a 12 mois Répondre

Bonjour,
excellent site tant au niveau design que dans la pédagogie,
je souhaiterais connaitre la méthode pour afficher des liens et des images ou des thumbs et stocker le tout en bdd mysql ?
merci d'avance et bonne continuation

WinuX Il y a 12 mois Répondre

Bonjour,

Merci pour ce tuto. Ca aurait été intéressant de comparer avec une autre méthode comme avec la fonction file_get_contents().
J'ai vu que t'en faisais part dans un autre tuto ^^

En tout cas, ça va m'être utile, encore merci

Orsam Il y a 1 an Répondre

Bonjour, pour la lecture de fichier externe, j'utilise l'objet HttpRequest, y a t-il une différence avec le curl de ce tuto ? Faut-il privilégier l'une ou l'autre des méthodes ?

Merci...
Orsam

3web Il y a 1 an Répondre

Super ! Simple et clair. Merci beaucoup

thankol Il y a 1 an Répondre

Bonjour,

j'ai une erreur, juste à la première étape, c.a.d. à l'affichage de l'objet simplexml :
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Start tag expected, '<' not found in /var/www/vhosts/vivacoeur.com/httpdocs/beta/xml1.php on line 7

line 7 : $xml = new simpleXMLElement($contenu);

une idée ?
merci d'avance
thankol

samas92i Il y a 2 ans Répondre

Sa serai possible de faire un tutoriel PHP passer du XML, car certaine API demande que l'on envoyé les donnée en xml.

zero Il y a 2 ans Répondre

Eh bien je ne sais pas mois

rh@vl Il y a 2 ans Répondre

Comment ils ont fait pour manipuler ces images?

kamal Il y a 2 ans Répondre

Bravo pour ce tuto,
mais j'ai un question !
comment on peut récupérer précisément le code html d'une page par exemple :
<div id="machin">
text
</div>

leknoppix Il y a 2 ans - Répondre

Avec un système de regex (expression régulière)

boubou Il y a 2 ans Répondre

Bon tuto mais y'a plus simple : simplexml_load_file()

Jutix Il y a 2 ans Répondre

C'est cool mais ça bloque le chargement du reste de la page si la connexion au flux XML ne répond pas :s

ipika Il y a 2 ans Répondre

ok merci, je vais voir !

ipika Il y a 2 ans Répondre

Bonjour, Super tuto.

J'aimerai savoir si tu pourrais faire un tutoriel pour justement crée un flux RSS.

Merci.

Badbart Il y a 2 ans - Répondre

A la fin de ce tuto : http://www.grafikart.fr/tutoriels/video/gerer-news-php-43
Il explique comment générer un flux rss

saadlam Il y a 2 ans Répondre

merci pour votre video
Je voudrais savoir si c'est faisable en parsant du html?
la procédure est identique?

Marioshi Il y a 2 ans Répondre

Bonjour j'aimerai juste savoir quel logiciel tu utilise pour filmer ton écran sur mac.
Merci d'avance

bigbrain Il y a 2 ans - Répondre

il a déjà répondu, tu ne pense pas que tu devrais lire ce que mettent les autre à la place de ne penser qu'a toi ?

phil Il y a 2 ans Répondre

Bonjour, j'aimerai savoir s'il est possible d'empêcher un site distant de parser votre flux rss.

Merci pour vos tutos enrichissants.

negurah Il y a 2 ans Répondre

petite info si vous importez sur un site en utf 8 un flux qui ne l'est pas, rajoutez utf8_decode : ,utf8_decode($v->title).

knostra Il y a 3 ans Répondre

Bonjour,

Super votre tutorial, très bien présenté.

Je voudrais savoir si c'est faisable en parsant du html?
la procédure est identique?

merci

hindo Il y a 3 ans Répondre

:) merci

zidou Il y a 3 ans Répondre

merci beaucouq pour les vidéos.

didou Il y a 3 ans Répondre

merci beaucouq a ce site vraiment elle m'a aidée beaucouq

didou Il y a 3 ans Répondre

Salut.Pour afficher les commentaires c'est pas plus rapide de faire une simple requête sur la base de donnée?

Bruno Il y a 3 ans Répondre

Bonjour,

Super sympas ta vidéo. Par exemple sur mon site dans l'admin je génère un fichier XML par un fichier PHP qui me récupère mes titres et mes commentaires de ma bd mais ils ont été rentré avec FCKeditor et donc il rajoute des balises html et l'on me dit que dans le flux rss entre les balises <description> </description> on ne peut pas récupérer mes commentaires dû au balise html de FCKeditor. Y a t-il un autre moyen ?

Merci et bravo pour la vidéo.

Cordialement,
Bruno

Didi Il y a 3 ans Répondre

Bonsoir, super tutoriel comme d'habitude;)

Cependant une question me vient à l'esprit, la librairie curl est-elle intégré par défault ? Ainsi que l'objet XML utilité ?

PS: Un tutoriel sur la programmation objet en PHP serait tout simplement, d'enfer.

Grafikart Il y a 3 ans Répondre

@Charlouf : Là ça ne sert absolument à rien dans mon cas, mais imaginons que tu veux récupérer les derniers sujet d'un site, afficher ton dernier twitt, ton dernier message facebook... La pluspart des API utilise du XML et donc ce tuto à pour but de montrer comment lire un XML distant (pas un XML qui se trouve sur le serveur et qui de plus est généré en PHP )

snake Il y a 10 mois - Répondre

merci pour ce toto mais en fait c ca la question j'utilise un API kewego je voudrai bien récupérer mes dernier vidéo merci

Charlouf Il y a 3 ans Répondre

Salut.Pour afficher les commentaires c'est pas plus rapide de faire une simple requête sur la base de donnée?Car le XML au départ est construit par rapport à la base de donnée.Même si ici ton but était de faire découvrir cURL et le parsing.

Lucas Il y a 3 ans Répondre

@Grafikat » Excuse moi alors :D

A bientôt

Ahmed Il y a 3 ans Répondre

Tutorial très utile, merci Grafikart et bonne continuation

Grafikart Il y a 3 ans Répondre

@Lucas : Non non pas de faute, on dit bien "parser" un fichier quand on analyse sa syntaxe.

Babou Il y a 3 ans Répondre

Super tuto, merci à toi Grafikart

Lucas Il y a 3 ans Répondre

@Grafikart » Faute dans le titre " Parser " au lieu de " Passer " :D

Voila

Grafikart Il y a 3 ans Répondre

Vimeo a connu pas mal de problème ces derniers jours donc je n'ai pas pu l'uploader encore, ça arrive bientôt

Bergit Il y a 3 ans Répondre

Super ! c'est pas mal utile
mais tu ne mets pas la vidéo disponible pour le téléchargent sur vimeo ?

Lyes Il y a 3 ans Répondre

Ooonn veuux un forum ! suur votre site !
Comme ça, on fera une communauté de "tutorialistes" !

PS: j'ai essayé sur mon hebergeur mais ça m'affiche cette erreur:

Fatal error: Cannot instantiate non-existent class: simplexmlelement in /var/alternc/html/a/asjs/web/test.php on line 5

Vinz Il y a 2 ans - Répondre

en effet la version de PHP influe sur la class simpleXMLElement.
Une version antérieure à PHP5 ne saura pas faire fonctionner le script, j'ai trouvé un moyen d'upgrader la version PHP en rajoutant dans le .htaccess cette ligne :
SetEnv PHP_VER 5
Je ne sais si cela marche chez tout les hébergeurs...

Salazar Il y a 3 ans Répondre

Très bon tutoriel

Grafikart Il y a 3 ans Répondre

@Hugo : Je suis sur Mac et j'utilise Screenflow qui intègre une petite solution de montage sur laquelle je peux faire des zooms. After Effect ne m'a servi que pour l'intro.

Hugo Il y a 3 ans Répondre

Bonjour,
Tout d'abord je dois dire un GRAND BRAVO pour ce site magnifique, j'adore le style du site, simple, fluide, fonctionnel, simple et en même temps beau c'est tout le style moderne.

Une petite question ... :$ ... Avec quel logiciel faites-vous vos tutoriels ? Je cherche désespérément.

chataoui Il y a 3 ans Répondre

merci bien !
c'est excellent continuez...

Salazar Il y a 3 ans Répondre

PS: AAAAH !

On voit mon pseudo en début de vidéo héhé *star*

Salazar Il y a 3 ans Répondre

Excellent !

Comme toujours :D

leknoppix Il y a 3 ans Répondre

Génial ce tutoriel. Je connaissais déjà.

legendary Il y a 3 ans Répondre

il est bouillant le raton là !

Lyes Il y a 3 ans Répondre

ah merci! c'est ça que je cherchait pour afficher les flux sur mon futur site,je vais mettre ça en accordéon

thib Il y a 3 ans Répondre

Pas mal, c'est assez intéressent, continuez comme sa

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.