Extraire des données avec une regex

WRInaute passionné
Bonjour,
je voudrais faire une recherche d'une chaine de caractères dans une url en utilisant les expressions régulières.
Le souci est que je ne comprends rien aux expressions régulières.

Ce dont j'ai besoin:
J'ai plusieurs url du type:
xxx.php?id=1111&param=2222
xxx.php?id=3333&param=4444
xxx.php?id=5555&param=6666

Ce que je voudrais est faire une boucle parcourant toutes ces chaines et a chaque fois faire un echo de ce qui se trouve dans les variables "id" et "param"

Avez vous une idée ?
Merci

Yves
 
WRInaute passionné
Code:
$preg = preg_match('(.*)?php?id=([0-9]+)&param=([0-9]+)$',$chaine,$matches);

me donne

Warning: preg_match() [function.preg-match]: Unknown modifier '?' in C:\wamp\www...
 
WRInaute accro
Par contre là c'est à toi de lire la doc, c'est écrit noir sur blanc comment faire, il y a même des exemples.
Et toi tu veux un preg_replace au fait.
 
WRInaute passionné
merde c'etait l'autre
Code:
$preg = preg_match('(.*)?php\?id=([0-9]+)&param=([0-9]+)$',$chaine,$matches);
 
WRInaute passionné
a quoi sert le ? avant php ?
Code:
$chaine="xxx.php?id=1111&param=2222";
$preg = preg_match('(.*)?php\?id=([0-9]+)$',$chaine,$matches);
echo $matches[0];
Warning: preg_match() [function.preg-match]: Unknown modifier '?' in C:\wamp\www\............
 
WRInaute passionné
Code:
$preg = preg_match('(.*).php\?id=([0-9]+)&param=([0-9]+)$',$chaine,$matches);

devrait avoir une fonction PHP sur WRI ca nous permettrait de tester online ^^
 
WRInaute accro
Oui, comme déjà indiqué, une regex dans les fonctions preg_* doit être encadrée par un délimiteur. Là, il considère que le premier ( est le délimiteur, donc il s'arrête au premier ), et il essaie d'interpréter le reste comme des flags, et ça ne lui plait pas.

De surcroît, comme le début n'a aucune importance, pas besoin de () du tout, et même du .*

preg_match_all('/.php\?id=(\d+)&param=(\d+)$/',$chaine,$matches);

Alternativement, en prenant les URLs une par une, parse_url et/ou parse_str sont probablement un meilleur choix...

Jacques.
 
Discussions similaires
Haut