10

我同时使用 PHP 和 Javascript 来构建某种 Web 服务。我尝试验证从 JS 发送到 PHP 的后参数计算的令牌。假设代码如下:

JS:

token = JSON.stringify(params);

PHP:

token = json_encode($_POST);

有人可以解释一下为什么两个生​​成的 JSON 字符串的长度不同吗?

(我尝试在 PHP 中修剪\n\r\t,在 PHP 中修剪斜杠,几个 JS 库)字符串的 PHP 版本总是有更多的字符。

4

3 回答 3

11

我遇到了同样的问题,我想比较编码的 json 字符串的加密版本。要使输出json_encode与 javascripts 相同,JSON.stringify您可以执行以下操作:

$php_string = json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
于 2019-06-18T10:30:02.970 回答
7

在 JavaScript 中,不带引号的 JSON 键是有效的。在 PHP 中,没有引号的 JSON 键是无效的。(事实上​​,正确的 JSON 语法是在键上加上引号。)

所以你是对的,区别在于JSON.stringify谁从你的整数键中去掉引号。

于 2013-08-26T10:38:03.967 回答
0

实际上,我有一个整数,它在 PHP 中用双引号括起来,但在 JS 中没有。因为我只需要验证数据是否相同,而且我不关心值,所以我去掉了所有的双引号,它就成功了。

于 2013-08-26T10:24:58.787 回答