![](/img/trans.png)
[英]convert json_encode php to javascript but without double quotes
[英]PHP json_encode data with double quotes
我正在使用这个简单的代码将数据库查询结果转换为 JSON 格式:
$result = $mysqli->query("
SELECT
date as a
, sum(sales) as b
, product as c
FROM
default_dataset
GROUP BY
date
, product
ORDER BY
date
");
$data = $result->fetch_all(MYSQLI_ASSOC);
echo stripslashes(json_encode($data));
问题是如果此查询返回的数据(例如在产品列中)有双引号。 json_encode 函数不会以良好的 JSON 格式对数据进行编码。
有人可以帮助我如何转义查询返回的双引号吗? 谢谢你。
您将需要htmlspecialchars
而不是带有正确编码的stripslashes
(UTF-8,如果您的页面使用UTF-8字符集)和ENT_QUOTES
,它将转义双引号以防止数据中断。 请参阅以下代码:
echo htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
json_encode
已经解决了这个问题,你通过调用stripslashes
打破了结果:
echo json_encode($data); //properly formed json
带有double quotes
字符串值的简单数组的示例。
$yourArr = array(
'title' => 'This is an example with "double quote" check it'
);
// add htmlspecialchars as UTF-8 after encoded
$encodeData = htmlspecialchars(json_encode($yourArr), ENT_QUOTES, 'UTF-8');
echo $encodeData;
结果:
{"title":"This is an example with \"double quote\" check it"}
也就是说,引用“将产生无效的JSON,但这只是一个问题,如果你使用json_encode()并且只是期望PHP神奇地逃脱你的引号。你需要自己逃避。
是的,PHP json_encode 不会“转义双”引号,我们需要以这种超级简单的方式手动转义这些引号-
array_walk($assoc_array, function(&$v, $k) {
if(is_string($v) && strpos($v, '"') !== false) {
$v = str_replace('"', '\"', $v);
}
});
// After escaping those '"', you can simply use json_enocde then.
$json_data = json_encode($assoc_array);
使用htmlspecialchars编码引号:
$json_array = array(
'title' => 'Example string\'s with "special" characters'
);
$json_decode = htmlspecialchars(json_encode($json_array), ENT_QUOTES, 'UTF-8');
您可以使用base64_encode和base64_decode完成此操作
要存储在数据库中,首先将其转换为base64_encode并存储到数据库中,如果您需要该数据,则可以使用base64_decode解密该数据
$var['cont'] = base64_encode($_POST['data']);
$dd = json_encode($var['cont']);
echo base64_decode ( json_decode($dd) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.