Extraire du texte entre crochets en PHP
Le défi de capturer du texte entre crochets en PHP nécessite une approche nuancée. Une tentative courante, utilisant /[.*?]/ comme expression régulière, ne récupère que la première instance, vous laissant avec un résultat incomplet.
Capture de l'enceinte :
Pour surmonter cette limitation, utilisez des expressions régulières qui englobent l'intégralité du texte entre crochets. Considérez le modèle :
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches);
Ici, /[1]/ fonctionne comme une expression régulière qui correspond à n'importe quelle chaîne entre crochets. Le caractère caret (^) correspond au début de la chaîne, suivi d'un crochet. La partie 2 signifie un caractère qui n'est pas une parenthèse. L'astérisque () correspond à n'importe quel nombre d'occurrences et le crochet final conclut le modèle.
L'exécution de cette expression régulière sur le texte fourni entraînera :
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
Capturer le texte à l'intérieur :
Vous pouvez également souhaiter extraire le texte sans les crochets. Cela nécessite une expression régulière modifiée :
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches);
Dans cette expression régulière, (3*) capture n'importe quel caractère entre crochets, supprimant efficacement les crochets de la sortie. Vous obtiendrez :
Array ( [0] => This [1] => test [2] => eat [3] => shorts )
N'oubliez pas que cette expression régulière suppose que les crochets ne sont pas imbriqués dans le texte.
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!