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 16/11/2010, 14h39   #1
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 493
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 493
Points : 304
Points : 304
Par défaut Parser un tableau HTML

Bonjour !

Je cherche à extraire des données d'un tableau HTML !

Voici le code du tableau :
Code :
1
2
3
4
<tr>
			<td class="classe-bibule">TITI </td>
			<td class="classe-truc"> TOTO45</td>
</tr>
  • classe-bibule et classe-truc sont fixe.
  • TITI et TOTO45 sont variable, chaine de caractère et/ou chiffres.
La finalité est d'avoir les données dans un tableau pour insertion en BDD.


J'ai auparavant trouvé ca :
Code :
1
2
3
4
5
$machaine = '<td class="la_classe1">date</td><td class="la_classe2">11/12/2005</td>';
 
preg_match("#<td class=\"la_classe1\">date</td><td class=\"la_classe2\">([0-9]{2}/\[0-9]{2}\/2[0-9]{3})</td>#", $machaine, $m);
 
$date = $m[1];
Mais ca ne fonctionne que pour les dates !
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 14h40   #2
Modérateur
 
Inscription : septembre 2010
Messages : 6 967
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 967
Points : 8 270
Points : 8 270
pour parser du HTML c'est avec DOMDocument les requete c'est avec DOMXpath
qu'est ce tu voudrais avoir en sortie ? un tableau ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2010, 14h42   #3
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 493
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 493
Points : 304
Points : 304
Citation:
Envoyé par stealth35 Voir le message
pour parser du HTML c'est avec DOMDocument les requete c'est avec DOMXpath
qu'est ce tu voudrais avoir en sortie ? un tableau ?
Quoi qu'est ce que ces trucs ?

Tu parle de ca : http://eusebius.developpez.com/php5dom/ ?
Ca marche aussi avec de l'HTML ?
C'est plus rapide qu'une expression régulière à l'execution ?



La finalité est d'avoir les données dans un tableau pour insertion en BDD.
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 14h49   #4
Modérateur
 
Inscription : septembre 2010
Messages : 6 967
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 967
Points : 8 270
Points : 8 270
Citation:
Envoyé par Space Cowboy Voir le message
Quoi qu'est ce que ces trucs ?

Tu parle de ca : http://eusebius.developpez.com/php5dom/ ?
Ca marche aussi avec de l'HTML ?
C'est plus rapide qu'une expression régulière à l'execution ?



La finalité est d'avoir les données dans un tableau pour insertion en BDD.
ouai c'est ca, tu veux parser du HTML, DOMDocument est fait pour parser du HTML ca tombe bien

ton tableau dois etre de quelle forme ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2010, 14h52   #5
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 493
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 493
Points : 304
Points : 304
Citation:
Envoyé par stealth35 Voir le message
ouai c'est ca, tu veux parser du HTML, DOMDocument est fait pour parser du HTML ca tombe bien

ton tableau dois etre de quelle forme ?

$data -> $valeur, un tableau en 2D.

J'ai la solution apparament, par contre il faut que je sache si DOMDocument est vraiment plus rapide qu'une expression régulière
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 15h07   #6
Modérateur
 
Inscription : septembre 2010
Messages : 6 967
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 967
Points : 8 270
Points : 8 270
Citation:
Envoyé par Space Cowboy Voir le message
$data -> $valeur, un tableau en 2D.

J'ai la solution apparament, par contre il faut que je sache si DOMDocument est vraiment plus rapide qu'une expression régulière
Citation:
Envoyé par Space Cowboy Voir le message
$data -> $valeur, un tableau en 2D.

J'ai la solution apparament, par contre il faut que je sache si DOMDocument est vraiment plus rapide qu'une expression régulière
data => valeur du type : classe-bibule => TITI

après pour le DOMDocument rapide non mais plus simple et plus adapter et plus maintenable
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 19h03   #7
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 056
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 056
Points : 1 563
Points : 1 563
Salut,

Citation:
Envoyé par Space Cowboy
il faut que je sache si DOMDocument est vraiment plus rapide qu'une expression régulière
Citation:
Envoyé par stealth35
pour le DOMDocument rapide non mais plus simple et plus adapter et plus maintenable
+1

Si tu désires malgré tout utiliser les expressions rationnelles pour ce cas...
Code :
1
2
3
4
5
6
7
8
9
10
<?php
$str="
<tr>
	<td class=\"classe-bibule\">TITI</td><td class=\"classe-truc\">TOTO45</td>
	<td class=\"classe-bibule\">Tata</td><td class=\"classe-truc\">Tonton</td>
</tr>
";
 
preg_match_all('%<td\s+.*?class\s*=\s*"classe-bibule"[^>]*>(.+?)</td>\s*<td\s+.*?class\s*=\s*"classe-truc"[^>]*>(.+?)</td>%si', $str, $m, PREG_SET_ORDER);
?>
Renvoie dans la variable $m...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Array(
	[0] => Array(
		[0] => <td class="classe-bibule">TITI</td><td class="classe-truc">TOTO45</td>
		[1] => TITI
		[2] => TOTO45
	)
	[1] => Array(
		[0] => <td class="classe-bibule">Tata</td><td class="classe-truc">Tonton</td>
		[1] => Tata
		[2] => Tonton
	)
)
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h08.


 
 
 
 
Partenaires

Hébergement Web