Regex séparateur []et espace

Résolu
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 12 août 2009 à 17:08
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 ;)

3 réponses

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
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][^ $]*)#
3
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
13 août 2009 à 07:13
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
0
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 à 13:36
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');
0
Rejoignez-nous