<?php
$a='/\\\/';
$b='/\\\\/';
var_dump($a);//string '/\\/' (length=4)
var_dump($b);//string '/\\/' (length=4)
var_dump($a===$b);//boolean true
?>
为什么带有3个反斜杠的字符串等于PHP中带有4个反斜杠的字符串?
我们可以在正则表达式中使用3反斜杠版本吗?
在PHP参考说,我们必须使用4个反斜杠。
注意:单引号和双引号的PHP字符串具有反斜杠的特殊含义。因此,如果\
必须与正则表达式匹配\\
,则必须在PHP代码中使用"\\\\"
或'\\\\'
。
$b='/\\\\/';
php逐个字符地解析字符串文字(或多或少)。第一个输入符号是正斜杠。结果是结果(分析步骤)中的正斜杠,并且输入符号(一个字符,/)从输入中删除。
下一个输入符号是反斜杠。它从输入中获取,并检查下一个字符/符号。这也是一个反斜杠。这是一个有效的组合,因此第二个符号也从输入中获取,并且结果是一个单个的斜杠(对于两个输入符号)。
第三和第四反斜杠相同。
最后一个输入符号(在文字内)是结果中的正斜杠->正斜杠。
->/\\/
现在为带有三个反斜杠的字符串:
$a='/\\\/';
php“查找”第一个斜杠,下一个字符为黑杠-这是一个有效的组合,导致结果中出现一个单斜杠,而输入文字中的两个字符均被占用。php然后“查找”第三个反斜杠,下一个字符为正斜杠,这不是有效的组合。因此,结果是一个单斜杠(因为php喜欢并原谅您....),并且从输入中仅取一个字符。下一个输入字符为正斜杠,结果中为正斜杠。
->/\\/
=>两个文字都编码相同的字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句