J'ai besoin d'un moyen de capturer le texte entre crochets. Ainsi, par exemple, la chaîne suivante:
[This] is a [test] string, [eat] my [shorts].
Pourrait être utilisé pour créer le tableau suivant:
Array (
[0] => [This]
[1] => [test]
[2] => [eat]
[3] => [shorts]
)
J'ai l'expression régulière suivante, /\[.*?\]/
mais il ne capture que la première instance, donc:
Array ( [0] => [This] )
Comment obtenir la sortie dont j'ai besoin? Notez que les crochets ne sont JAMAIS imbriqués, donc ce n'est pas un problème.
Correspond à toutes les chaînes avec des crochets:
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);
Si vous voulez des chaînes sans crochets:
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);
Version alternative plus lente de l'appariement sans crochets (en utilisant "*" au lieu de "[^]"):
$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);