Maison  >  Article  >  développement back-end  >  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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 04:20:03400parcourir

How to Escape Backslashes in PHP Regular Expressions?

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

Pour échapper aux barres obliques inverses dans un modèle d'expression régulière PHP, on peut utiliser soit 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 (\) : Lorsque vous utilisez trois barres obliques inverses, 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 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.

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