En PHP, les expressions régulières sont un outil de correspondance de chaînes couramment utilisé. Grâce aux expressions régulières, nous pouvons facilement extraire les informations requises d'une chaîne. Cet article explique comment utiliser les expressions régulières PHP pour extraire plusieurs sous-chaînes d'une chaîne.
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);
où $pattern représente l'expression régulière qui doit être mise en correspondance, $string représente la chaîne qui doit être mise en correspondance et $matches est un tableau utilisé pour stocker tous les résultats correspondants. $flags représente l'indicateur de correspondance, qui peut être PREG_PATTERN_ORDER ou PREG_SET_ORDER. $offset représente la position de départ de la correspondance, qui est par défaut 0.
Ce qui suit est un exemple spécifique. Supposons que nous devions faire correspondre tous les nombres d'une chaîne :
$str = 'abc123def456ghi789jkl'; preg_match_all('/d+/', $str, $matches); print_r($matches[0]);
Le résultat de sortie est :
Array ( [0] => 123 [1] => 456 [2] => 789 )
Comme le montrent les résultats, dans le tableau $matches renvoyé par la fonction preg_match_all, le premier Chaque élément représente le résultat correspondant à l'ensemble de l'expression régulière, et les éléments suivants représentent le résultat correspondant à chaque parenthèse dans l'expression régulière.
$str = 'abc123def456ghi789jkl'; preg_match_all('/([a-z]+)(d+)/', $str, $matches); print_r($matches);
Le résultat de sortie est :
Array ( [0] => Array ( [0] => abc123 [1] => def456 [2] => ghi789 ) [1] => Array ( [0] => abc [1] => def [2] => ghi ) [2] => Array ( [0] => 123 [1] => 456 [2] => 789 ) )
Comme le montre le résultat, le premier élément du Le tableau $matches est l'intégralité de l'expression régulière. Le résultat correspondant, les éléments suivants correspondent au résultat correspondant de chaque parenthèse dans l'expression régulière. De cette façon, nous pouvons facilement extraire plusieurs sous-chaînes de la chaîne.
Pour résoudre ce problème, nous pouvons utiliser le mode non gourmand, qui correspond au moins de caractères possible. Dans les expressions régulières, utilisez des points d'interrogation pour indiquer des modèles non gourmands. Par exemple, pour faire correspondre « aa » et « bb » dans l’exemple ci-dessus, vous utiliserez l’expression régulière « /a.+?b/ ».
$str = 'aabbcc'; preg_match_all('/a.+?b/', $str, $matches); print_r($matches[0]);
Le résultat de sortie est :
Array ( [0] => aa [1] => bb )
Comme le montrent les résultats, le mode non gourmand peut nous aider à faire correspondre avec précision les résultats dont nous avons besoin.
Résumé
Cet article explique comment extraire plusieurs sous-chaînes d'une chaîne à l'aide d'expressions régulières PHP. Grâce à la fonction preg_match_all, au regroupement par parenthèses et au mode non gourmand, nous pouvons gérer de manière flexible diverses situations et extraire les informations requises. Dans le développement réel, l'utilisation d'expressions régulières peut considérablement améliorer l'efficacité et le taux de réussite de la correspondance de chaînes.
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!