paj*_*paj 12 php string comparison types
当我回显它时,我有两个看起来相同的字符串,但是当var_dump()它们出现时,它们是不同的字符串类型:
Echo:
http://blah
http://blah
var dump:
string(14) "http://blah"
string(11) "http://blah"
strToHex:
%68%74%74%70%3a%2f%2f%62%6c%61%68%00%00%00
%68%74%74%70%3a%2f%2f%62%6c%61%68
Run Code Online (Sandbox Code Playgroud)
当我比较它们时,它们会返回false.如何操作字符串类型以便我可以执行返回true的比较.字符串11和字符串14有什么区别?我确信有一个简单的解决方案,但还没有找到任何东西,无论我如何内爆,爆炸,UTF8编码等他们不会比较或更改类型的字符串.
谢谢你的帮助!
彼得.
使用时var_dump(),则string(14)意味着值string保存14字节.因此,string(11)与string(14)没有不同的字符串的"类型",它们只是不同长度的字符串.
我会使用这样的东西来查看这些字符串中的实际内容:
function strToHex($value, $prefix = '') {
$result = '';
$length = strlen($value);
for ( $n = 0; $n < $length; $n++ ) {
$result .= $prefix . sprintf('%02x', ord($value[$n]));
}
return $result;
}
echo strToHex("test\r\n", '%');
Run Code Online (Sandbox Code Playgroud)
输出:
%74%65%73%74%0d%0a
Run Code Online (Sandbox Code Playgroud)
这解码为:
或者,正如@Karolis的评论中所指出的,您可以使用内置函数bin2hex():
echo bin2hex("test\r\n");
Run Code Online (Sandbox Code Playgroud)
输出:
746573740d0a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4533 次 |
| 最近记录: |