"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment échapper aux barres obliques inverses dans les expressions régulières PHP ?

Comment échapper aux barres obliques inverses dans les expressions régulières PHP ?

Publié le 2024-11-17
Parcourir:997

How to Escape Backslashes in PHP Regular Expressions?

Échapper aux barres obliques inverses dans les expressions régulières PHP

Pour échapper à une barre oblique inverse dans un modèle d'expression régulière PHP, on peut utiliser trois barres obliques inverses (\\ ) ou quatre barres obliques inverses (\\\\). Bien que les deux options donnent des correspondances réussies, il existe des différences subtiles dans leur interprétation et leur utilisation.

Cas de test :

Considérez les cas de test suivants :

// TEST 01: (3 backslashes)
$pattern = "/^[\\\]{1,}$/";
$string = '\\';

// ----- RETURNS A MATCH -----

// TEST 02: (4 backslashes)
$pattern = "/^[\\\\]{1,}$/";
$string = '\\';

// ----- ALSO RETURNS A MATCH -----

Dans les deux cas, une correspondance est renvoyée, indiquant que trois et quatre barres obliques inverses peuvent être utilisées pour échapper à une barre oblique inverse.

Interprétation et utilisation :

  • Trois barres obliques inverses (\\) : Lors de l'utilisation de trois barres obliques inverses, la Le motif est interprété comme correspondant à un seul caractère barre oblique inverse (\). Cependant, si le caractère suivant du modèle est également une barre oblique inverse, une barre oblique inverse littérale ne peut pas être mise en correspondance en utilisant seulement trois barres obliques inverses.
// Matches a single backslash
preg_match( '/\\\/', '\\' );      // 1

// Fails to match a literal backslash followed by a backslash
preg_match( '/\\\\\s/', '\\s' );   // 0
  • Quatre barres obliques inverses (\\\\) : D'un autre côté, l'utilisation de quatre barres obliques inverses correspond toujours à une barre oblique inverse littérale, quel que soit le caractère suivant. En effet, la quatrième barre oblique inverse échappe à la troisième barre oblique inverse, ce qui en fait un caractère littéral.
// Matches a literal backslash followed by any character
preg_match( '/\\\\\s/', '\\s' );   // 1

Recommandation :

Sur la base de ces observations, il est recommandé de toujours utiliser quatre barres obliques inverses (\\\\) dans un modèle d'expression régulière lorsque vous cherchez à faire correspondre une barre oblique inverse. Cette approche garantit la cohérence et la prévisibilité de la correspondance de modèles.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3