Aller au contenu

preg_match_all()

Introduction

En PHP, les expressions régulières sont essentielles pour rechercher et manipuler des chaînes de caractères. La fonction preg_match_all() recherche toutes les occurrences d'un motif dans une chaîne de caractères et renvoie le nombre total de correspondances. Cet article explique comment l'utiliser efficacement.

Comprendre la fonction preg_match_all()

La fonction preg_match_all() recherche toutes les occurrences d'un motif d'expression régulière dans une chaîne de caractères. Elle renvoie le nombre de correspondances trouvées (ou false en cas d'erreur) et remplit le tableau $matches. La syntaxe est la suivante :

php
preg_match_all($pattern, $subject, &$matches, $flags = 0, $offset = 0);
  • $pattern : Le motif d'expression régulière.
  • $subject : La chaîne de caractères à rechercher.
  • $matches : Un tableau rempli des correspondances trouvées.
  • $flags : Optionnel. Modifie le comportement de recherche. Les drapeaux courants incluent PREG_PATTERN_ORDER (par défaut, regroupe les résultats par motif) et PREG_SET_ORDER (regroupe les résultats par occurrence). PREG_OFFSET_CAPTURE ajoute le décalage en octets de chaque correspondance.
  • $offset : Optionnel. Spécifie la position de départ dans la chaîne de caractères.

Exemple d'utilisation

L'exemple suivant montre les groupes de capture et la structure du tableau $matches :

php
<?php

$pattern = '/([A-Z][a-z]+) (\d+)/';
$subject = 'Alice 25 Bob 30';

preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);

foreach ($matches as $match) {
  echo "Name: {$match[1]}, Age: {$match[2]}\n";
}

Dans cet exemple, le motif utilise des groupes de capture () pour extraire les noms et les âges. Avec PREG_SET_ORDER, $matches est indexé par occurrence de correspondance, donc $match[0] contient la correspondance complète, $match[1] contient le premier groupe (nom), et $match[2] contient le deuxième groupe (âge). Sans groupes de capture, $matches[0] contient toutes les correspondances complètes, et aucun indice de groupe supplémentaire n'est créé.

Conclusion

La fonction preg_match_all() est essentielle pour trouver toutes les correspondances de motifs dans les chaînes PHP. Elle permet aux développeurs d'extraire et de manipuler les données efficacement. Cet aperçu couvre son utilisation de base et la structure du tableau. Pour toute question supplémentaire, consultez la documentation officielle de PHP.

Pratique

Quel est l'objectif de la fonction preg_match_all() en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.