从 cookie 获取数据
Getting data from a cookie
我正在使用以下代码输出到我的错误日志:
ob_start();
var_dump($_COOKIE['agl-values']);
error_log(ob_get_clean());
输出为:
[02-Apr-2018 16:12:58 UTC] string(321)
"{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02
15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321)
"{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02
15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321)
"{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02
15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321)
"{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02
15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
我只需要访问纬度和经度变量。如何隔离其中一个 cookie,然后如何将其变成 JSON?
更新
我检查了 json_last_error()
,它告诉我字符串有语法错误 - 可能是转义的双引号?
看起来它存储为一个字符串。转换为 JSON 对象然后引用:
$value = json_decode($_COOKIE['agl-values']);
echo $value->longitude . ' ' . $value->latitude;
更新
这是您的字符串的直接示例:
php > $var = json_decode("{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}");
php > echo $var->longitude;
-71.1755274
cookie已经是JSON格式,您需要正确解码。
使用:
print_r(json_decode($_COOKIE['agl-values'], true));
或者对于单个值:
echo json_decode($_COOKIE['agl-values'], true)['latitude'];
要使用默认 json 解码对象:
echo json_decode($_COOKIE['agl-values'])->latitude;
看起来 json (\"
) 中有一些转义引号,这意味着 json_decode
会因语法错误而失败。尝试使用 str_replace
将它们更改为常规引号 ("
):
json_decode(str_replace('\"', '"', $_COOKIE['agl-values']))
然后,要获取纬度和经度,请执行以下操作:
$aglValues = json_decode(str_replace('\"', '"', $_COOKIE['agl-values']));
var_dump($aglValues->latitude);
var_dump($aglValues->longitude);
我正在使用以下代码输出到我的错误日志:
ob_start();
var_dump($_COOKIE['agl-values']);
error_log(ob_get_clean());
输出为:
[02-Apr-2018 16:12:58 UTC] string(321) "{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321) "{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321) "{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
[02-Apr-2018 16:12:58 UTC] string(321) "{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}"
我只需要访问纬度和经度变量。如何隔离其中一个 cookie,然后如何将其变成 JSON?
更新
我检查了 json_last_error()
,它告诉我字符串有语法错误 - 可能是转义的双引号?
看起来它存储为一个字符串。转换为 JSON 对象然后引用:
$value = json_decode($_COOKIE['agl-values']);
echo $value->longitude . ' ' . $value->latitude;
更新
这是您的字符串的直接示例:
php > $var = json_decode("{\"latitude\":\"42.2470259\",\"longitude\":\"-71.1755274\",\"altitude\":\"NaN\",\"accuracy\":\"29\",\"altitudeAccuracy\":\"NaN\",\"heading\":\"NaN\",\"speed\":\"NaN\",\"error_code\":\"\",\"error_message\":\"\",\"php_time\":1522684274,\"php_date\":\"2018-04-02 15:51:14\",\"php_date_format\":\"Y-m-d H:i:s\",\"user_id\":0}");
php > echo $var->longitude;
-71.1755274
cookie已经是JSON格式,您需要正确解码。
使用:
print_r(json_decode($_COOKIE['agl-values'], true));
或者对于单个值:
echo json_decode($_COOKIE['agl-values'], true)['latitude'];
要使用默认 json 解码对象:
echo json_decode($_COOKIE['agl-values'])->latitude;
看起来 json (\"
) 中有一些转义引号,这意味着 json_decode
会因语法错误而失败。尝试使用 str_replace
将它们更改为常规引号 ("
):
json_decode(str_replace('\"', '"', $_COOKIE['agl-values']))
然后,要获取纬度和经度,请执行以下操作:
$aglValues = json_decode(str_replace('\"', '"', $_COOKIE['agl-values']));
var_dump($aglValues->latitude);
var_dump($aglValues->longitude);