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 01/01/2007, 16h43   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 16
Points : 1
Points : 1
Par défaut Motif incorrect ?

Bonjour,

j'essaye de récupérer dans un code source une série d'informations en utilisant ce code :

Code :
1
2
3
4
5
6
7
8
9
preg_match_all("`class=\"itemColG10\">(.*)<font style=\"font-weight:normal;\">&nbsp;&nbsp;v&nbsp;([^<>]*)</font></a><img src=\"/img/v4/fr.gif\" style=\"background-color:#[FFF7D9|FFFFFF]\">
			</div>
			<div class=\"itemColG21\" style=\"font-size:11px\";>([^<>]*)</div>
			<div class=\"itemColG2\">
			Licence:&nbsp;<font class=\"edito\">([^<>]*)</font>&nbsp;&nbsp;&nbsp;Date de la dernière version:&nbsp;<font class=\"edito\">([^<>]*)</font><br>
			Taille:&nbsp;<font class=\"edito\">([^<>]*)&nbsp;Mo</font>&nbsp;&nbsp;&nbsp;
 
			OS:&nbsp;<font class=\"edito\">([^<>]*)</font>`m", $_POST['code'.$i], $matches);
			print_r($matches);
Seulement le print_r m'affiche ceci :

Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) )

Je ne suis pas très doué en RegEx donc le problème vient sans doute de là, ou alors j'utilise peut-être la mauvaise fonction ?

Merci de m'éclairer sur la nature du problème.
Sorgue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 21h20   #2
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
A la diférence de preg_match, preg_match_all ne s'arrete pas à la 1er occurence et est donc susceptible de renvoyer plusieurs résultat, qu'il va bien entendu mettre dans un tableau...

Il est donc normal que ton print_r() t'affiche un tableau de tableau, chaque résultat étant lui même un tableau.

De mémoire, un 4e paramètre peut être ajouté à preg_match_all pour déterminer la façon dont sera trier ton tableau de résultat (un flag, que tu trouvera dans l'aide PHP)

Pour résumer, $matches[0] est le 1er resultat, $matches[1] le 2e resultat ect...
ensuite, $matches[0][0] est l'expression complete trouver dans le 1er resultat, $matches[0][1] est la 1er sous chaine du 1er resultat retourner par ton preg etc...
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 21h24   #3
Membre du Club
 
Inscription : janvier 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 132
Points : 60
Points : 60
Conclusion : il te faut faire :
Code :
1
2
3
4
print_r($matches[0]);
print_r($matches[1]);
print_r($matches[2]);
print_r($matches[3]);
Autant de fois que t'as de résultats, ou alors plus simplement avec un while, je sais plus trop comment, ca fait longtemps que j'ai pas utilisé de tableaux...
Marc31boss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 21h46   #4
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
foreach($matches as $val) print_r($val)

gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h31.


 
 
 
 
Partenaires

Hébergement Web