[RESOLU] Expression régulière

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Expression régulière

Re: Expression régulière

par mcrae » 28 oct. 2014, 13:12

Parfait, j'ai ma réponse, il suffit d'ajouter un "?" comme expliqué dans ton lien :

preg_match_all("/\[g\](.*?)\[\/g\]/",$str,$matches,PREG_SET_ORDER);

Merci !

Re: Expression régulière

par jojolapine » 28 oct. 2014, 12:58

Bonjour,

Tu peux te renseigner sur la "gourmandise" des opérateurs : http://www.lumadis.be/regex/tuto_pcre.php#gourmand

Bon courage ;)

Expression régulière

par mcrae » 28 oct. 2014, 12:22

Bonjour,

J'ai besoin d'un regard neuf sur une expression régulière...

Le but est de récupérer ce qui est entre les balises "[g]...[/g]".
Par exemple, pour "Bonjour je m'appelle [g]Boris[/g], je suis marié à [g]Evgenia[/g] et notre fille s'appelle [g]Olga[/g]", je dois récupérer "Boris", "Evgenia" et "Olga". En gros, c'est le même principe que dans l'éditeur de ce forum !

J'ai donc la commande suivante :
preg_match_all("/\[g\](.*)\[\/g\]/",$str,$matches,PREG_SET_ORDER);

Le problème est que mon tableau $matches contient un seul élément (et non pas les 3 qu'il devrait contenir), qui commence au premier "[g]" et se termine au dernier "[/g]".
Concrètement, $matches contient "Boris[/g], je suis marié à [g]Evgenia[/g] et notre fille s'appelle [g]Olga".

Comment écrire la pattern pour que chaque élément soit trouvé ?