作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<?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 reference说我们必须使用 4 个反斜杠。
注意:单引号和双引号 PHP 字符串具有反斜杠的特殊含义。因此,如果 \
必须与正则表达式 \\
匹配,则 "\\\\"
或 '\\\\'
必须在 PHP 代码中使用。
最佳答案
$b='/\\\\/';
php 逐字符解析字符串文字(或多或少)。第一个输入符号是正斜杠。结果是(解析步骤的)结果中的正斜杠,并且输入符号(一个字符,/)从输入中移除。
下一个输入符号是反斜杠。它取自输入并检查下一个字符/符号。这也是一个反斜杠。这是一个有效的组合,因此第二个符号也取自输入,结果是单个黑斜杠(对于两个输入符号)。
第三个和第四个反斜杠相同。
最后一个输入符号(在文字中)是结果中的正斜杠 -> 正斜杠。
-> /\\/
现在对于带有三个反斜杠的字符串:
$a='/\\\/';
php“找到”第一个黑斜杠,下一个字符是黑斜杠——这是一个有效的组合,导致结果中有一个黑斜杠,并且输入文字中的两个字符都被采用。php 然后“找到”第三个黑斜杠,下一个字符是正斜杠,这不是有效的组合。所以结果是一个单一的黑斜杠(因为 php 爱你并且原谅你......)并且只从输入中取出一个字符。下一个输入字符是正斜杠,导致结果中出现正斜杠。
-> /\\/
=> 两个文字编码相同的字符串。
关于php - 为什么 3 个反斜杠在 PHP 中等于 4 个反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28062568/
我是一名优秀的程序员,十分优秀!