我不知道发生了什么,但我在数组中有一个字符串.它必须是一个字符串,因为我先在它上面运行它:
$array[0] = (string)$array[0];
Run Code Online (Sandbox Code Playgroud)
如果我以纯文本形式将$ array [0]输出到浏览器,它会显示:
hellothere
Run Code Online (Sandbox Code Playgroud)
但如果我JSON编码$ array我得到这个:
hello\u0000there
Run Code Online (Sandbox Code Playgroud)
另外,我需要将'there'部分(\ u0000之后的位)分开,但这不起作用:
explode('\u0000', $array[0]);
Run Code Online (Sandbox Code Playgroud)
我甚至不知道\ u0000是什么或如何在PHP中控制它.
我确实看到了这个链接:试图从我的json中找到并摆脱这个\ u0000 ...这表明str_replacing生成的JSON.我不能这样做(并且需要先将上面提到的它分开)所以我然后检查了Google的'php check for backslash\0 byte'但我仍然无法解决该怎么做.
\uXXXX是JSON Unicode转义符号(X十六进制).
在这种情况下,它意味着0ASCII字符,也就是NUL字节,可以分割它,你可以这样做:
explode('\u0000', json_encode($array[0]));
Run Code Online (Sandbox Code Playgroud)
或者更好的是:
explode("\0", $array[0]); // PHP doesn't use the same notation as JSON
Run Code Online (Sandbox Code Playgroud)
你拥有的字符串"hello\0world",或者"hello\x00world"你喜欢的任何字符串.如果你echo这样做,那么\0就不会显示空符号,这就是为什么你会看到它helloworld,但json_encode会检测它并将其转义为任何其他特殊字符,这就是它被可见\u0000字符串替换的原因.
在我看待它的方式中,json正在完美地编码字符串,\u0000就是以json编码的方式完成再现输入字符串的工作.您不必触摸其输出.如果你不想那样\u0000,你应该修改它的输入.
| 归档时间: |
|
| 查看次数: |
21841 次 |
| 最近记录: |