Maison > développement back-end > tutoriel php > Comment puis-je extraire le texte entre crochets d'une chaîne à l'aide de PHP ?

Comment puis-je extraire le texte entre crochets d'une chaîne à l'aide de PHP ?

Barbara Streisand
Libérer: 2024-11-26 20:29:10
original
720 Les gens l'ont consulté

How Can I Extract Text Enclosed in Square Brackets from a String Using PHP?

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].
Copier après la connexion

L'objectif est de convertir cette chaîne en un tableau :

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]
Copier après la connexion

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]);
Copier après la connexion

Ce code utilise l'expression régulière suivante :

  • /[/: Correspond au crochet ouvrant.
  • [^]]* : Correspond à tous les caractères sauf le carré de fermeture bracket.
  • /]/: Correspond au crochet fermant.

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]);
Copier après la connexion

Ce code utilise :

  • /[/: Correspond au crochet ouvrant.
  • ( [^]]*): Capture tous les caractères sauf le carré de fermeture crochet.
  • /]/: Correspond au crochet fermant.

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]);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal