Expressions régulières PHP (PCRE)

Une expression régulière décrit un motif de correspondance de chaîne. Elle peut être utilisée pour vérifier si une chaîne contient une certaine sous-chaîne, remplacer les sous-chaînes correspondantes, ou extraire d'une chaîne les sous-chaînes qui répondent à certaines conditions.

Pour plus de contenu sur les expressions régulières, veuillez consulter notre :Expressions régulières - Tutoriel。

En PHP, les expressions régulières sont principalement utilisées via un ensemble de fonctions intégrées, dont les plus couramment utilisées sont :

  • preg_match(): Recherche un motif correspondant dans une chaîne et renvoie uniquement la première correspondance.
  • preg_match_all(): Recherche un motif correspondant dans une chaîne et renvoie toutes les correspondances.
  • preg_replace(): Recherche un motif correspondant dans une chaîne, puis le remplace.

fonction preg_match()

La fonction preg_match() est utilisée pour rechercher un motif correspondant dans une chaîne et ne renvoie que la première correspondance.

preg_match(pattern, subject, matches)

Description du paramètre :

  • pattern: Le motif d'expression régulière.
  • subject: La chaîne à rechercher.
  • matches: Paramètre facultatif utilisé pour stocker le résultat de la correspondance.

Exemple

<?php
$str = "Hello, World!";
$pattern = "/Hello/";
if (preg_match($pattern, $str, $matches)) {
    echo "Match successful!" . PHP_EOL;
    print_r($matches);
} else {
    echo "No match found!";
}
?>

La sortie du code ci-dessus est :

匹配成功!
Array
(
    [0] => Hello
)

fonction preg_match_all()

La fonction preg_match_all() est utilisée pour rechercher un motif correspondant dans une chaîne et renvoie toutes les correspondances.

preg_match_all(pattern, subject, matches)

Description du paramètre :

  • Permet de rechercher un motif correspondant dans une chaîne et de renvoyer toutes les correspondances.
  • pattern: Le motif d'expression régulière.
  • subject: La chaîne dans laquelle effectuer la recherche.
  • matches: Tableau utilisé pour stocker tous les résultats correspondants.

Exemple

<?php
$str = "Le chat et le chapeau";
$pattern = "/[aeiou]/";
if (preg_match_all($pattern, $str, $matches)) {
    echo "Voyelles correspondantes : " . implode(", ", $matches[0]);
} else {
    echo "No match found!";
}
?>

La sortie du code ci-dessus est :

匹配的元音字母: e, a, a, e, a

Fonction preg_replace()

La fonction preg_replace() est utilisée pour rechercher un motif correspondant dans une chaîne, puis le remplacer.

preg_replace(pattern, replacement, subject)

Description du paramètre :

  • pattern: Le motif d'expression régulière.
  • remplacement : La chaîne de remplacement.
  • subject: La chaîne à rechercher.

Exemple

<?php
$str = "J'aime PHP";
$pattern = "/PHP/";
$replacement = "EXEMPLE";
$new_str = preg_replace($pattern, $replacement, $str);
echo "Chaîne après remplacement : " . $new_str;
?>

La sortie du code ci-dessus est :

替换后的字符串: I love EXAMPLE

Fonctions PCRE

En PHP, nous pouvons utiliser l'extension PCRE pour faire correspondre des motifs de chaîne.

FonctionDescription
preg_filter Effectuer une recherche et un remplacement par expression régulière
preg_grep Retourner les entrées du tableau qui correspondent au motif
preg_last_error Renvoie le code d'erreur généré par la dernière exécution d'expression régulière PCRE
preg_match_all Effectue une correspondance globale d'expression régulière
preg_match Effectue une correspondance d'expression régulière
preg_quote Échappe les caractères d'expression régulière
preg_replace_callback_array Effectue une recherche et un remplacement par expression régulière à l'aide d'une fonction de rappel
preg_replace_callback Effectue une recherche et un remplacement par expression régulière à l'aide d'une fonction de rappel
preg_replace Effectuer une recherche et un remplacement par expression régulière
preg_split Diviser une chaîne à l'aide d'une expression régulière

Constantes PREG

Constante Description Depuis quelle version
PREG_PATTERN_ORDER Les résultats sont ordonnés par "pattern", uniquement utilisé pour preg_match_all(), c'est-à-dire, $matches depuis
PREG_SET_ORDER Les résultats sont ordonnés par "set", uniquement utilisé pour preg_match_all(), c'est-à-dire, $matches  
PREG_OFFSET_CAPTURE VoirPREG_SPLIT_OFFSET_CAPTUREla description de. 4.3.0
PREG_SPLIT_NO_EMPTY Ce drapeau indique à preg_split() de ne retourner que les parties non vides.  
PREG_SPLIT_DELIM_CAPTURE Ce drapeau indique à preg_split() de capturer également le contenu correspondant aux expressions entre parenthèses. 4.0.5
PREG_SPLIT_OFFSET_CAPTURE Si ce drapeau est défini, le décalage de chaque occurrence de la sous-chaîne correspondante sera également retourné. Notez que cela modifie les valeurs du tableau retourné, où chaque élément est un tableau constitué de la sous-chaîne correspondante comme élément 0 et de son décalage par rapport à la chaîne cible comme élément 1. Ce drapeau ne peut être utilisé qu'avec preg_split(). 4.3.0
PREG_NO_ERROR Retourné par preg_last_error() lorsqu'il n'y a pas d'erreur correspondante. 5.2.0
PREG_INTERNAL_ERROR Retourné par preg_last_error() lorsqu'il y a une erreur interne de PCRE. 5.2.0
PREG_BACKTRACK_LIMIT_ERROR Retourné par preg_last_error() lorsque la limite de retour arrière est dépassée. 5.2.0
PREG_RECURSION_LIMIT_ERROR Retourné par preg_last_error() lorsque la limite de récursion est dépassée. 5.2.0
PREG_BAD_UTF8_ERROR Retourné par preg_last_error() si la dernière erreur a été causée par des données UTF-8 anormales (disponible uniquement lors de l'exécution d'expressions régulières en mode UTF-8). 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR Retourné par preg_last_error() si le décalage ne correspond pas à un code UTF-8 valide (disponible uniquement lors de l'exécution d'expressions régulières en mode UTF-8). 5.3.0
PCRE_VERSION Numéro de version et date de publication de PCRE (par exemple, "7.0 18-Dec-2006"). 5.2.4
Autres extensions