8796 sujets

Développement web côté serveur, CMS

Bonjour à tous..

J'ai une chaine, par exemple : 'La surface fait 254 m2 dans cette maison'.
J'aimerais récupèrer 254, j'utilise donc une expression régulière : #^[0-9]+ m2$#i

A l'aide de la fonction ereg en php, il ne me renvoi pas ma valeur...je suis pas très fort en expression reg, si quelqu'un pouvait m'éclairer

Merci !

Yannick
Modifié par michtouariv (21 Oct 2009 - 10:41)
Salut,

D'une part, il faut éviter d'utiliser les fonctions ereg* au profit des fonctions preg*.
D'autre part, tu dis utiliser la fonction ereg, alors pourquoi dans ton expression il y a des délimiteurs et un modificateur, signe de l'utilisation des fonctions preg* ?
Enfin, c'est normal que tu ne récupères rien, vu que tu ne captures rien. D'autant plus que tu demandes à trouver un chaine commençant par un nombre et finissant par m2, ce qui ne sera jamais le cas.

Donc :

preg_match( '` ([0-9]+) m2 `', $tachaine, $match );
Déjà merci de ta réponse rapide et juste..(car ca marche bien)

Pourquoi utiliser les preg plutot que les ereg ? (je ne savais pas vraiment les différences)

Et j'avoue ne pas comprendre pourquoi :
a écrit :

tu demandes à trouver un chaine commençant par un nombre et finissant par m2, ce qui ne sera jamais le cas

c'est pourtant bien ce que je recherche, non ?

Et qu'appelle tu capturer ? Est ce les ` ?

Merci pour toutes ces infos complémentaires.
Les fonctions ereg* basées sur la syntaxe POSIX sont plus lentes que les fonctions preg* basées sur la syntaxe PCRE. De plus les premières sont dépréciées et amenées à disparaitre.

Tu confonds la chaine que tu recherches et la chaine dans laquelle tu recherches. Le pattern fait référence à ce que tu recherches dans la chaine de recherche. Ce que tu recherches commence effectivement par un nombre et finit par m2, sauf que la chaine de recherche ne commence et ne finit par ces deux valeurs. Donc ton pattern doit prendre en compte qu'il y a autre chose avant et après la chaine que tu recherches. Suis-je clair ? Smiley biggol

Et donc, ce qui nous permet de ressortir les éléments que l'on recherche sont les parenthèses. C'est ça que l'on appelle "capturer". C'est d'ailleurs la base des expressions régulières. Les ` ne servent ici que de délimiteurs.
Modifié par Agylus (20 Oct 2009 - 16:36)