gpt4 book ai didi

php - 为什么 3 个反斜杠在 PHP 中等于 4 个反斜杠?

转载 作者:可可西里 更新时间:2023-11-01 01:00:41 33 4
gpt4 key购买 nike

<?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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com