从mongo中查出了一个文档,用var_dump,发现它的_id长度是23,但是显示的却是一个17字节的mac地址,于是我觉得很奇怪,
用_dump_string_assic函数输出了这个_id,函数如下,输出后,更奇怪:
1, "="为什么不输出呢?
2, (44) (39) (89) (47) (08) (38) 这些assic都查可打印的,为什么不输出呢?
array(6) {
["_id"]=>
string(23) "0c:96:bf:f6:2a:7c"
...
...[mblen=23,(44) (39) (89) (47) (08) (38) (0=48) (c=99) (:=58) (9=57) (6=54) (:=58) (b=98) (f=102) (:=58) (f=102) (6=54) (:=58) (2=50) (a=97) (:=58) (7=55) (c=99) ]
function _dump_string_assic($str) {
$c = strlen($str);
$s = '';
for($i = 0; $i < $c; $i++) {
$s .= "({$str[$i]}" . "=" . ord($str[$i]) . ') ';
}
return "[mblen=".mb_strlen($str).",$s]";
}
用_dump_string_assic函数输出了这个_id,函数如下,输出后,更奇怪:
1, "="为什么不输出呢?
2, (44) (39) (89) (47) (08) (38) 这些assic都查可打印的,为什么不输出呢?
array(6) {
["_id"]=>
string(23) "0c:96:bf:f6:2a:7c"
...
...[mblen=23,(44) (39) (89) (47) (08) (38) (0=48) (c=99) (:=58) (9=57) (6=54) (:=58) (b=98) (f=102) (:=58) (f=102) (6=54) (:=58) (2=50) (a=97) (:=58) (7=55) (c=99) ]
function _dump_string_assic($str) {
$c = strlen($str);
$s = '';
for($i = 0; $i < $c; $i++) {
$s .= "({$str[$i]}" . "=" . ord($str[$i]) . ') ';
}
return "[mblen=".mb_strlen($str).",$s]";
}
echo base64_encode($data['_id']);
贴出结果
echo $s, PHP_EOL;
echo bin2hex($s);
GBK环境中看到
魦綋袏0c:96:bf:f6:2a:7c
f48bbd93d08a30633a39363a62663a66363a32613a3763UTF-8环境中看到
[color=#FF0000]