Page 1 sur 1

récuperer la position d'une expression et son contenu

Posté : 04 janv. 2007, 16:12
par Khorne_fr1
Bonjour,

le contenu (strings) d'une variable contient des expressions régulières de ce type: "\(VAR[0-9]+\)" ex: http://(VAR19)

Je cherche un moyen de récupérer la position de ses expressions dans la chaine en question et surtout de récupérer la valeur numérique contenu dans l'expression (dans mon exemple le 19).

Merci pour votre aide,

Posté : 04 janv. 2007, 18:22
par zeus
Si tu utilises les expressions régulières, les parenthèses sont capturantes.

par exemple, à partir de ton pattern, "\(VAR([0-9]+)\)" va capturer le nombre et si tu utilises une fonction comme preg_match_all() va te permettre de le récupérer ;)

Posté : 05 janv. 2007, 01:30
par Khorne_fr1
Merci beaucoup j'avais pas pensé a cette fonction.


Par contre je ne comprend pas, mon pattern (avec ou sans tes parentheses capturantes) me donne l'erreur suivante pour la fonction preg_match_all():

Warning: Delimiter must not be alphanumeric or backslash in

Mon code:

Code : Tout sélectionner

preg_match_all("\(VAR([0-9]+)\)", $string, $out);

Posté : 05 janv. 2007, 01:45
par Khorne_fr1
J'ai trouvé au hasard d'un newsgroup, pour les gens qui pourraient avoir la meme erreur, voici la bonne version du pattern pour la fonction en question:

Code : Tout sélectionner

preg_match_all("/\(VAR([0-9]+)\)/", $string, $out);

Posté : 05 janv. 2007, 09:15
par zeus
Pour utiliser une expression régulières avec preg_match_all(), il faut poser des délimiteurs autour de ton pattern ;)

Généralement, on utilise / ou # ;)