Difficultés avec la fonction preg_match_all

Fermé
Diamonds77 Messages postés 5 Date d'inscription lundi 12 décembre 2016 Statut Membre Dernière intervention 8 février 2017 - 8 févr. 2017 à 23:49
productif Messages postés 39 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 9 février 2017 - 9 févr. 2017 à 14:34
Bonjour,

J'aimerais récupérer le nombre qui se situe entre les balises span. Le nombre peut varier !

<span class="topic-count">
::before
"
24
"
::after
</span>


J'ai essayé le code qui suit :

preg_match_all("#<span class=\"topic-count\">(.*?)</span>#", $source, $nombre[$i]); 


Malheureusent cela ne fonctionne pas. Je crois que ce sont les espaces qui me posent problème...

Mon code en entier :

$result=array();
$page = 201;
while ($page>=1) {
$source = file_get_contents ("http://www.jeuxvideo.com/forums/0-27047-0-1-0-".$page."-0-counter-strike-global-offensive.htm");
preg_match_all("#<span class=\"topic-count\">(.*?)</span>#", $source, $nombre[$i]);
$result = array_merge($result, $nombre[$i][1]);
print("Page : ".$page ."\n");
$page-=25;
}
print_r ($nombre);


Merci d'avance !
A voir également:

1 réponse

productif Messages postés 39 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 9 février 2017 20
9 févr. 2017 à 14:34
Bonjour,

Je recommande de faire l'opération en plusieurs étapes (plusieurs appels à preg_match_all) : d'abord isoler la chaîne entre les balises span seulement, puis isoler une chaîne plus petite à l'intérieur et ainsi de suite.

Pour mettre au point les regex, je fais en Javascript d'abord : http://www.squarefree.com/shell/shell.html

Par exemple en Javascript:

"<span>abc123def</span>".match(/[0-9]+/)


=> 123

Ensuite il suffit d'adapter la syntaxe à celle de preg_match_all qui est légèrement différente.

voilà
0