Page 1 sur 1
Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 10:54
par Furax
Bonjour,
J'ai une chaine de caractères, ave certains mots ou expressions cernés de crochets.
Ex: Bonjour [comment] allez-[vous] ?
Je souhaiterais pouvoir récupérer tous les mots situés entre crochets, mais vous vous en doutez, je n'y parviens pas...
Par avance, merci pour votre aide!
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 11:08
par @rthur
Bonjour,
Cela se fait avec la fonction preg_match_all()
Et il faut que tu crées une expression régulière pour obtenir ce que tu veux.
Je te recommande d'utiliser le site
http://regex101.com pour construire et tester ton expression régulière (regex). Important : les crochets sont des caractères spéciaux dans les expressions régulières donc il faut que tu les "échappes" en mettant un antislash devant : \[ et \]
Essaye par toi même de construire ta regex et reviens vers nous quand tu auras avancé si tu es toujours bloqué.
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 11:13
par Furax
Ok merci.
Je ne connaissais pas ce site, super pratique pour tester ça.
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 11:34
par @rthur
A noter que si tu cliques sur Save regex, il va te fournir une url unique avec tes données de test que tu peux partager ensuite ici si tu veux un coup de main
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 11:53
par Furax
Etrange, j'ai une expression qui fonctionne dans mon code, mais le site me dit que rien ne correspond:
https://regex101.com/r/BKCwry/1
Code : Tout sélectionner
$monTexte = "1 [abc] 2 [def] 3 [ghi] 4 [klm] 5";
$pattern = '#\[[^\]]*\]#';
$result = preg_match_all($pattern, $monTexte, $out);
var_dump($out);
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 12:02
par @rthur
En fait les délimiteurs de la regex (le dièse dans ton cas) est déjà intégré en dur dans regex101.
Si tu le retire de ta regex alors ça fonctionne.
Ma recommandation est d'ailleurs d'utiliser le caractère ` (AltGr + 7) comme délimiteur car il y a moins de risque que ça se retrouve dans une regex qu'un dièse.
Par ailleurs, si tu veux récupérer le texte, tu peux mettre des parenthèses capturantes, comme ceci :
https://regex101.com/r/BKCwry/2
Re: Récupérer tous les éléments entre crochets
Posté : 28 nov. 2017, 12:04
par Furax
Super, merci beaucoup pour ton aide et l'adresse du site qui est déjà dans mes favoris.
