首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP JSON字符串,转义JS输出的双引号

PHP JSON字符串,转义JS输出的双引号
EN

Stack Overflow用户
提问于 2011-09-18 23:18:16
回答 7查看 175K关注 0票数 59

我正在从PHP数组创建一个JSON字符串。我已经用json_encode()对它进行了编码。

代码语言:javascript
复制
$data = array(
    'title' => 'Example string\'s with "special" characters'
);

$data = json_encode( $data );

$data使用wp_localize_script()进行本地化,并可通过全局data变量进行访问。

在JS文件中,我可以通过以下方式访问信息:

代码语言:javascript
复制
var data     = data.replace( /"/g, '"' ),
    jsonData = jQuery.parseJSON( data );

console.log( jsonData );

这将产生以下输出:

代码语言:javascript
复制
{ "title":"Example string's with "special" characters" }

http://jsonlint.com/中输入该结果将返回一个错误。删除"special“两边的双引号将验证该字符串。

从PHP创建JSON字符串并将其正确转义以便在JS文件中使用的最佳方法是什么?

EN

回答 7

Stack Overflow用户

发布于 2013-11-14 23:16:49

另一种方法是使用htmlspecialchars对引号进行编码

代码语言:javascript
复制
$json_array = array(
    'title' => 'Example string\'s with "special" characters'
);

$json_decode = htmlspecialchars(json_encode($json_array), ENT_QUOTES, 'UTF-8');
票数 59
EN

Stack Overflow用户

发布于 2016-04-07 01:43:41

我成功地做到了这一点:

代码语言:javascript
复制
$json = str_replace("\u0022","\\\\\"",json_encode( $phpArray,JSON_HEX_QUOT)); 

默认情况下,json_encode()会将"转义为\"。但对于json.PARSE()来说,它仍然是错误的JSON。因此,通过添加选项JSON_HEX_QUOTjson_encode()将用\u0022替换"json.PARSE()仍然不会喜欢\u0022。因此,我们需要用\\"替换\u0022\\\\\"是转义的\\"

注意:如果您有HEX单引号问题,您可以添加选项JSON_HEX_APOS,将单引号替换为unicode javascript值。

例如:json_encode( $phpArray, JSON_HEX_APOS|JSON_HEX_QUOT ));

票数 37
EN

Stack Overflow用户

发布于 2016-01-27 18:58:51

从php 5.3开始使用json_encode($json_array, JSON_HEX_QUOT);http://php.net/manual/en/json.constants.php

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7462394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档