要匹配一个反斜杠,很多人都和PHP手册中说:始终三重逃避它,这样\\\\
注意 :
单,双引号PHP字符串有反斜杠的特殊意义。 因此,如果\具有与正则表达式匹配
\\
,然后"\\\\"
或'\\\\'
必须在PHP代码中使用。
下面是一个例子字符串: \test
$test = "\\test"; // outputs \test;
// WON'T WORK: pattern in double-quotes double-escaped backslash
#echo preg_replace("~\\\t~", '', $test); #output -> \test
// WORKS: pattern in double-quotes with triple-escaped backslash
#echo preg_replace("~\\\\t~", '', $test); #output -> est
// WORKS: pattern in single-quotes with double-escaped backslash
#echo preg_replace('~\\\t~', '', $test); #output -> est
// WORKS: pattern in double-quotes with double-escaped backslash inside a character class
#echo preg_replace("~[\\\]t~", '', $test); #output -> est
// WORKS: pattern in single-quotes with double-escaped backslash inside a character class
#echo preg_replace('~[\\\]t~', '', $test); #output -> est
结论 :
- 如果该模式是单引号,反斜线必须是双重逸出
\\\
匹配文字\ - 如果图案是双引号的,它依赖于反弹是否是一个字符类内它必须至少两次转义
\\\
一个字符类它必须是三逃脱外\\\\
谁可以告诉我一个差异,其中一个单引号的图案如双反斜线转义'~\\\~'
将匹配什么比在一个双引号的图案如三转义反斜线不同"~\\\\~"
或失败。
当/为什么/在什么情况下会是错误的使用双转义\
在单引号模式如'~\\\~'
匹配一个反斜杠?
如果没有回答这个问题,我会继续为始终使用双反斜线转义\\\
在单引号PHP正则表达式匹配一个文字\
,因为可能没有什么不妥的地方。