Capturer du texte entre crochets en PHP
En programmation, nous rencontrons souvent le besoin d'extraire des données spécifiques d'une chaîne plus grande. Un scénario courant consiste à capturer du texte entre crochets, comme le montre l'exemple fourni :
[This] is a [test] string, [eat] my [shorts].
L'objectif est de convertir cette chaîne en un tableau :
[ '[This]', '[test]', '[eat]', '[shorts]' ]
Alors qu'un une expression régulière comme /[.*?]/ peut sembler suffisante, elle ne capture que la première instance des crochets. Pour obtenir le résultat souhaité, nous avons besoin d'une approche modifiée.
Solution d'expression régulière :
Nous pouvons utiliser preg_match_all avec une expression régulière modifiée pour faire correspondre toutes les occurrences de texte dans crochets. Le code suivant accomplit cela :
preg_match_all("/\[[^\]]*\]/", $text, $matches); var_dump($matches[0]);
Ce code utilise l'expression régulière suivante :
Méthode alternative pour supprimer les crochets :
Si nous voulons extraire le texte sans les crochets, nous pouvons modifier l'expression régulière légèrement :
preg_match_all("/\[([^\]]*)\]/", $text, $matches); var_dump($matches[1]);
Ce code utilise :
Troisième option utilisant le quantificateur "*" :
Une méthode alternative, bien que plus lente, consiste à utiliser le quantificateur "*" au lieu de "[^]":
preg_match_all("/\[(.*?)\]/", $text, $matches); var_dump($matches[1]);
En utilisant ces expressions régulières, nous pouvons capturer efficacement le texte entre crochets, nous fournissant ainsi le résultat souhaité décrit dans l'énoncé initial du problème.
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!