Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 19h28   #1
Invité de passage
 
tarek
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : tarek

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
Par défaut Extraction de données d'une page web

Je désire extraire des données se trouvant dans un tableau de la page suivante (le résultat du formulaire) http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta,
Voici un exemple de code qui affiche le contenu des cellules du tableau (<td>)
J'ai essayé ce code mais il m'affiche pas tous les cellules du tableau (contenu des TD)
Code :
1
2
3
4
5
6
7
$content = file_get_contents('TheCharteredInstituteofTaxationAboutUsFindaCTA.html');
 
//$pattern = "/\<td\>$w\<\/td\>/";
$pattern = "#<td(.*)>(.+)</td>#";
preg_match($pattern, $content, $matches); 
for ($i=0;$i<count($matches);$i++)
echo($matches[$i]);
Merci d'avance.
tito26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 20h43   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Pour parser du HTML c'est DOMDocument
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 14h04   #3
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 55
Points : 77
Points : 77
sinon pour ta question, deux choses :

1- ta regex va prendre le plus long qui soit. ce qui fait pour
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<table>
<tr>
<td class="middle">contenu1</td>
<td>contenu 2</td>
</tr><tr>
<td class="title">contenu3</td>
<td>contenu 4</td>
</tr>
</table>
 
// Ton preg_match va extraire
Array( 0 => ' class="middle">contenu1</td><td>contenu 2</td></tr><tr><td class="title">contenu3</td><td', 1 => 'contenu 4')
Pour remédier à cela, voici le pattern

Code :
$pattern = "#<td(.*?)>(.+?)</td>#";
2- preg_match ne renvoi que la première occurence qu'il trouve. Pour avoir tous les contenus, utilise plutôt preg_match_all qui marche de la même manière. (Attention, $matches est alors un tableau de tableaux)
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/08/2011, 17h30   #4
Invité de passage
 
tarek
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : tarek

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par Avalion Voir le message
sinon pour ta question, deux choses :

1- ta regex va prendre le plus long qui soit. ce qui fait pour
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<table>
<tr>
<td class="middle">contenu1</td>
<td>contenu 2</td>
</tr><tr>
<td class="title">contenu3</td>
<td>contenu 4</td>
</tr>
</table>
 
// Ton preg_match va extraire
Array( 0 => ' class="middle">contenu1</td><td>contenu 2</td></tr><tr><td class="title">contenu3</td><td', 1 => 'contenu 4')
Pour remédier à cela, voici le pattern

Code :
$pattern = "#<td(.*?)>(.+?)</td>#";
2- preg_match ne renvoi que la première occurence qu'il trouve. Pour avoir tous les contenus, utilise plutôt preg_match_all qui marche de la même manière. (Attention, $matches est alors un tableau de tableaux)
Merci, c'est résolu.
tito26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h50.


 
 
 
 
Partenaires

Hébergement Web