Regex séparateur []et espace [Résolu]

Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
- - Dernière réponse : cs_moumouf
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
- 13 août 2009 à 15:35
Bonjour,

Un petit exemple clair :

$search = 'toto est [un idiot]';

Je souhaiterai avoir comme retour (avec preg_match_all)
array(0 => 'toto', 1 => 'est', 2 => [un idiot]);


Voici ma regex actuelle, qui ne me récupere que [un idiot] preg_match_all('#\[.*\]|(\s+(\w+)\s$)#', $search, $occ)

Pas moyen de recuperer les mots entre espaces...

Merci d'avance à l'âme charitable qui m'aidera ;)
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
3
Merci
Qqun m'a donnée la solution sur un autre forum, je la colle au cas où il y aurait des interressés.

#(\[[^\]]+\])|([a-zA-Z0-9][^ $]*)#

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_moumouf
Messages postés
341
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009
0
Merci
Bonjour,

C'est peut-être à cause du $ dans ton pattern. Cela cherche donc uniquement la partie "\s+(\w+)\s" uniquement pour une fin de chaine.

J'utiliserais, de préférence, le pattern suivant :

#(\s\w+?\s|\[[^\]+?]\])#

Cordialement
Commenter la réponse de cs_TropNul
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
0
Merci
bonjour et merci pour votre aide

cependant ceci avec :
preg_match_all('#(\s\w+?\s|\[[^\]+?]\])#', $search, $occ)

ne trouve pas d'occurences pour l'exemple : toto [est un] idiot

et dans la finalité voici ce que j'aimerai avoir
array(0 => 'toto', 1 => 'est un', 2 => 'idiot');
au lieu de
array(0 => 'toto', 1 => '[est un]', 2 => 'idiot');
Commenter la réponse de cs_moumouf