Capturer plusieurs segments de texte entre crochets en PHP
Question :
Comment capturer tous les segments de texte placés entre crochets dans un chaîne ?
Réponse :
Pour capturer plusieurs segments de texte entre crochets, utilisez l'expression régulière suivante :
/\[[^\]]*\]/
Cette expression régulière correspond à n'importe quelle chaîne qui commence par un crochet, contient un nombre quelconque de caractères autres que des crochets et se termine par un crochet.
Pour extraire le segments capturés, utilisez la fonction preg_match_all(). Cette fonction prend le modèle regex et la chaîne cible en entrée et renvoie un tableau contenant toutes les correspondances. Le code PHP suivant montre comment capturer plusieurs segments de texte à l'aide de cette expression régulière :
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches); var_dump($matches[0]);
Ce code produit le résultat suivant :
array(4) { [0] => string(5) "[This]" [1] => string(5) "[test]" [2] => string(5) "[eat]" [3] => string(7) "[shorts]" }
Alternative pour extraire du texte sans crochets :
Pour extraire uniquement le texte entre crochets, utilisez la commande suivante regex :
/\[([^\]]*)\]/
Cette regex correspond à toute chaîne commençant par un crochet, contenant un nombre quelconque de caractères autres que des crochets et se terminant par un crochet. Les caractères entre crochets sont regroupés à l'aide de parenthèses.
Pour extraire les segments capturés sans les crochets, utilisez le 1 er groupe de capture, comme indiqué dans le code PHP suivant :
preg_match_all("/\[([^\]]*)\]/", $text, $matches); var_dump($matches[1]);
Ce code produit le résultat suivant :
array(4) { [0] => string(4) "This" [1] => string(4) "test" [2] => string(3) "eat" [3] => string(6) "shorts" }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!