Alors que je souhaiterai :
"blabla blabla machin machin fin.
Je ne comprends pas pourquoi il ne fait pas toutes les occurrences entre crochet?!
Au lieu de cela il prend le 1er crochet en ouverture qu'il trouve et le dernier en fermeture...
Merci à tous pour votre aide.
DiGhan ton expression ne fonctionne pas...
Entre temps j'ai trouvé une autre façon de faire qui fonctionne aussi bien et même mieux dans un cas de figure ou il n'y a rien entre les crochets [] :
preg_replace("@\[[\!]*?[^\[\]]*?\]@","",$chaine);
Je vous avous que je ne comprend pas tous ce qu'implique cette expression, je l'ai "bidouillé" sans comprendre certaine de ses composantes... si quelqu'un se sent capable de m'expliquer pas à pas je suis preneur.
\[ => le caractère [ puisque échappé (pour que le moteur ne l'interprète pas comme l'ouverture d'une classe)
[ => ouverture de la classe
^] => tous les caractères sauf le ] (pas besoin de l'échapper ici puisqu'il est en première position dans la classe et qu'une classe vide n'est pas reconnue)
] => fermeture de la classe
* => rien ou plusieurs fois ce qui précède
(cad
[^]])