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

Eléphant du PHP | 59 Messages

04 janv. 2007, 16:12

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,

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 janv. 2007, 18:22

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 59 Messages

05 janv. 2007, 01:30

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);

Eléphant du PHP | 59 Messages

05 janv. 2007, 01:45

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);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 janv. 2007, 09:15

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 # ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer