我遇到了问题,因为目前的结果非常意外。我正在计算一个散列的关键字长度,它肯定会给我一个意想不到的结果。
echo strlen("$2a$08$MphfRBNtQMLuNro5HOtw3Ovu20cLgC0VKjt6w7zrKXfj1bv8tNnNa");
输出 - 6
让我知道原因,以及为什么输出6
。
键盘链接 - http://codepad.org/pLARBx6F
答案 0 :(得分:5)
您必须使用单引号'
。使用双引号("
),由于字符串中的$
,部分内容会被解释为变量。
一般来说,除非你特别需要双打,否则习惯使用单引号并不是一个坏主意。
查看"变量"包含在这里。它们是$2a
,$08
和$MphfRBNtQM......
前两个不能是变量,因为它们以数字开头,因此是6个字符。第三个确实可能是一个适当的变量,但由于它没有设置,它是空的。
答案 1 :(得分:1)
使用以下代码计算字符串长度 -
echo strlen('$2a$08$MphfRBNtQMLuNro5HOtw3Ovu20cLgC0VKjt6w7zrKXfj1bv8tNnNa');
您需要使用单引号,因为在第三次出现符号$
时,字母表会在它之后开始,并将其视为新变量。所以在第三次$
出现之前,只有6个字符存在,而你的字符串长度为6
答案 2 :(得分:-2)
尝试以下
<?php
echo strlen('$2a$08$MphfRBNtQMLuNro5HOtw3Ovu20cLgC0VKjt6w7zrKXfj1bv8tNnNa');
?>
如果您更改字符串并删除除第一个之外的其余'$'
个符号,那么这将正常工作,因为通过添加$
,它在PHP中具有特殊含义。