Regex casse-tête

Résolu
snipchain Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
 snipchain -
Bonjour à tous :)

je cherche à spliter une longue chaine en plusieurs petites suivant certaines variables + et - optionnels et en fonction des " pour les expressions...
pour être plus clair, j'aimerai que la chaine

$chaine = 'mot0 mot1 +mot2 -mot3 "expression a" +"expression b" -"expression c"';

soit splité en

mot0
mot1
+mot2
-mot3
"expression a"
+"expression b"
-"expression c"

j'ai pensé faire
preg_split('#[\+-]?(")?(.+)(")?#i', $chaine);
(" à la place des " car j ai déjà passé la variable dans htmlspecialchars) mais ca ne marche pas et je ne vois pas où ca cloche... :s n étant pas expert en regex, je me demandais si quelqu'un pouvait m'aider? :p :)

Merci beaucoup d'avance pour votre aide car j ai déjà le cerveau qui fume!

1 réponse

JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut,

Je ne suis pas très fan des expressions régulières, mais j'ai pu faire ça avec preg_match_all !

preg_match_all('#([-|+]*)([a-zA-Z0-9]+|("[a-zA-Z0-9 ]+"))#', $chaine, $result);
var_dump($result[0]);


Mettez en résolu quand c'est résolu -.- ...
1
snipchain
 
Merci beaucoup Joos! j'ai juste dû modifier un peu pour que ca puisse prendre en compte certaine exception et c'est tout! je ne pense jamais à utiliser preg_match_all, je devrai y penser un peu plus souvent...
encore merci en tous cas! :)
0