Page 1 sur 1

aide pour isoler une valeur d'une expression régulière

Posté : 03 déc. 2007, 17:26
par Danny Coulombe
Bonjour,

J'ai un problème à la fois simple et compliqué (pour moi). J'essais d'isoler une valeur dans une expression régulière.

Le (.+?) de mon expression /\[ *!menu *= *(.+?)\]/si , doit isoler la valeur entré dans [!menu=***]. Bref, je désire trouvé la fonction qui me permettrai d'entré ces valeurs dans une variable dynamique.

Voici ce que j'utilise pour le moment (non fonctionnel):
$text = "Bonjour toi, bienvenue sur [!menu=titre-a-saisir]. Est-ce que ça marche?";

$check = array();
$check = preg_split("\[ *!menu *= */si",$text);
Merci beaucoup de votre aide, je suis désespéré!!

Posté : 03 déc. 2007, 21:49
par Ryle
les fonctions preg_replace() (pour remplacer) ou preg_match() (pour capturer) seraient à mon avis plus adaptées à ce que tu veux faire...

Quant au masque, commence simplement, tu veux récupérer la partie "titre-a-saisir" de ton exemple, qui sera constitué de n'importe quels caractères (représenté par le point), pouvant apparaitre de 0 à n fois (représenté par l'étoile), ce qui te donne ceci :
#\[!menu=(.*)\]#
Adapte ensuite, étape par étape si tu veux effectivement autoriser des espaces en plus dans cette chaine, si tu veux modifier la cardinalité en la passant de 1 à N au lieu de 0, etc..