Récupère les données d'une page web en PHP [Résolu/Fermé]

Signaler
-
tito23
Messages postés
308
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
16 janvier 2013
-
Bonjour,
je dois faire une application en PHP qui récupère les données d'une page web; enfaite ces données se trouve dans un tableau au coeur de la page!

Est ce que vous connaissez une fonction PHP qui fait ça?

Merci


3 réponses

Salut !

Je viens d'essayer le code, il semble qu'il y ait une erreur.
Ca vient du preg_match(), mais je ne sais pas pourquoi.
Donc, si tu es sûr qu'il y a un tableau dans la page recherchée (sinon ca fait rien), essaye ce code (version finale, j'espère);
$page = file_get_contents("http://domaine.com/");  
$tableau = preg_replace("#(.*)<table(.*)>(.+)</table>(.*)#", "<table $2>$3</table>", $page);  
echo $tableau;  
}  
Ton tableau 
sera affiché, et inutile d'y rajouter <table> et </table>.
Cela fonctionne-t-il ?
;)
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 79750 internautes nous ont dit merci ce mois-ci

tito23
Messages postés
308
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
16 janvier 2013
3
le $2 et le $3 ça correspond à quoi?
Salut !

Pour récupérer le contenu d'une page web en PHP, voici cette fonction :

file_get_contents($page);

Note que cette fonction, lorsqu'elle appelle une page sur le même serveur, renvoi la source en PHP même, au lieu de celle éxécutée en HTML.

Sauf exception, cette fonction renverra quelque chose chose du type :
<html><head><title>
etc.

Après, si tu cherches un tableau, tu le récupères avec des expressions régulières :D
$page = file_get_contents("http://domaine.com/");
if(preg_match("#(.*)<table(.*)>(.+)</table>(.*)#", $page)){
$tableau = preg_replace("#(.*)<table(.*)>(.+)</table>(.*)#", "$3", $page);
// $tableau vaut maintenant "<tr><td>Cellule 1</td><td>Etc.</td></tr>" + Etc;
// Et après, si tu veux continuer à tirer les informations, tu continues avec les expresisons régulières...
}


Voila ;)
Merci pour votre réponse!

Je suis un debutant en PHP! donc si je comprend bien, $tableau contient le tableau que je veux récuperer!
Il suffit alors de faire un echo($tableau);?
Oui, ou à peu près...
Lors du tri par regex, le contour <table ...> est supprimé.
Donc, soit, tu fais :
<table>
<?php echo $tableau; ?>
</table>

Ou soit, tu modifie la regex tel qu'on garde les paramètres HTML.
Pour ce, la ligne de l'appel de preg_replace ( PAS preg_match() ), remplace-la par :
$tableau = preg_replace("#(.*)<table(.*)>(.+)</table>(.*)#", "<table $2>$3</table>", $page);

Et, normalement, tu auras ton tableau entier, avec les paramtres de <table>.
Bye ;)
Bonjour Bilow

ca marche super bien

Merci pour votre aide!