"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como escapar de barras invertidas em expressões regulares do PHP?

Como escapar de barras invertidas em expressões regulares do PHP?

Publicado em 17/11/2024
Navegar:766

How to Escape Backslashes in PHP Regular Expressions?

Escapando barras invertidas em expressões regulares PHP

Para escapar de uma barra invertida em um padrão de expressão regular PHP, pode-se usar três barras invertidas (\\ ) ou quatro barras invertidas (\\\\). Embora ambas as opções produzam correspondências bem-sucedidas, há diferenças sutis em sua interpretação e uso.

Casos de teste:

Considere os seguintes casos de teste:

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

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

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

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

Em ambos os casos, uma correspondência é retornada, indicando que três e quatro barras invertidas podem ser usadas para escapar de uma barra invertida.

Interpretação e uso:

  • Três barras invertidas (\\): Ao usar três barras invertidas, o padrão é interpretado como correspondendo a um único caractere de barra invertida (\). No entanto, se o próximo caractere no padrão também for uma barra invertida, uma barra invertida literal não poderá ser correspondida usando apenas três barras invertidas.
// Matches a single backslash
preg_match( '/\\\/', '\\' );      // 1

// Fails to match a literal backslash followed by a backslash
preg_match( '/\\\\\s/', '\\s' );   // 0
  • Quatro barras invertidas (\\\\): Por outro lado, usar quatro barras invertidas sempre corresponde a uma barra invertida literal, independentemente do caractere seguinte. Isso ocorre porque a quarta barra invertida escapa da terceira barra invertida, tornando-a um caractere literal.
// Matches a literal backslash followed by any character
preg_match( '/\\\\\s/', '\\s' );   // 1

Recomendação:

Com base nessas observações, é recomendado sempre usar quatro barras invertidas (\\\\) em um padrão regex ao procurar corresponder uma barra invertida. Essa abordagem garante consistência e previsibilidade na correspondência de padrões.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3