Maison >développement back-end >tutoriel php >Comment la fonction `preg_quote()` de PHP peut-elle échapper aux caractères pour une utilisation sécurisée du modèle Regex ?

Comment la fonction `preg_quote()` de PHP peut-elle échapper aux caractères pour une utilisation sécurisée du modèle Regex ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 03:20:11339parcourir

How Can PHP's `preg_quote()` Function Escape Characters for Safe Regex Pattern Use?

Échappement de caractères pour les modèles Regex en PHP

En PHP, la fonction preg_quote() fournit un moyen d'échapper des caractères dans une expression régulière ( Regex) qui ont une signification particulière pour le moteur Regex. Cela empêche ces caractères d'être interprétés comme faisant partie du modèle, permettant à l'expression d'être utilisée dans un autre modèle Regex sans provoquer de conflits.

Semblable à la fonction Regex.Escape() en C#, preg_quote() ajoute un barre oblique inverse () avant chaque caractère de la chaîne d'entrée qui fait partie de la syntaxe Regex. Ces caractères spéciaux incluent :

  • . * ? [ ^ ] $ ( ) { } = ! &Lt ; > | : -

Par défaut, preg_quote() n'échappe pas au caractère délimiteur utilisé pour encadrer le modèle Regex. Pour vous assurer que le délimiteur est également échappé, spécifiez-le comme deuxième paramètre de la fonction.

Exemple :

Supposons que nous ayons une URL, $url = 'http ://stackoverflow.com/questions?sort=newest', que l'on souhaite retrouver dans une chaîne entourée de whitespace :

// Escape the characters in the URL and the forward slash (/) delimiter
$escapedUrl = preg_quote($url, '/');

// Enclose the Regex pattern in forward slashes
$regex = '/\s' . $escapedUrl . '\s/';

// Find occurrences of the URL in the string
preg_match($regex, $haystack, $matches);

var_dump($matches);

Dans cet exemple, preg_quote() échappe le point (.), le point d'interrogation (?) et le signe égal (=) dans l'URL, ainsi que toutes les barres obliques. En conséquence, le modèle Regex que nous créons peut trouver avec succès l'URL dans la chaîne de botte de foin.

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!

Déclaration:
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