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 ?
É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 :
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!