我正在从PHP数组创建一个JSON字符串。我已经用json_encode()
对它进行了编码。
$data = array(
'title' => 'Example string\'s with "special" characters'
);
$data = json_encode( $data );
$data
使用wp_localize_script()
进行本地化,并可通过全局data
变量进行访问。
在JS文件中,我可以通过以下方式访问信息:
var data = data.replace( /"/g, '"' ),
jsonData = jQuery.parseJSON( data );
console.log( jsonData );
这将产生以下输出:
{ "title":"Example string's with "special" characters" }
在http://jsonlint.com/中输入该结果将返回一个错误。删除"special“两边的双引号将验证该字符串。
从PHP创建JSON字符串并将其正确转义以便在JS文件中使用的最佳方法是什么?
发布于 2013-11-14 23:16:49
另一种方法是使用htmlspecialchars对引号进行编码
$json_array = array(
'title' => 'Example string\'s with "special" characters'
);
$json_decode = htmlspecialchars(json_encode($json_array), ENT_QUOTES, 'UTF-8');
发布于 2016-04-07 01:43:41
我成功地做到了这一点:
$json = str_replace("\u0022","\\\\\"",json_encode( $phpArray,JSON_HEX_QUOT));
默认情况下,json_encode()
会将"
转义为\"
。但对于json.PARSE()
来说,它仍然是错误的JSON。因此,通过添加选项JSON_HEX_QUOT
,json_encode()
将用\u0022
替换"
。json.PARSE()
仍然不会喜欢\u0022
。因此,我们需要用\\"
替换\u0022
。\\\\\"
是转义的\\"
。
注意:如果您有HEX
单引号问题,您可以添加选项JSON_HEX_APOS
,将单引号替换为unicode javascript值。
例如:json_encode( $phpArray, JSON_HEX_APOS|JSON_HEX_QUOT ));
发布于 2016-01-27 18:58:51
从php 5.3开始使用json_encode($json_array, JSON_HEX_QUOT);
:http://php.net/manual/en/json.constants.php
https://stackoverflow.com/questions/7462394
复制相似问题