You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数组转JavaScript数组遇撇号报错的解决方法

问题原因与修复方案

这个错误的核心是字符串中的单引号引发了JS语法冲突:当你用单引号包裹PHP输出的JSON字符串时,cote d'ivoire里的单引号会提前闭合JS的字符串字面量,剩下的ivoire"]) ?>就成了无效的JS代码,从而抛出Unexpected identifier错误。

举个实际的例子,PHP输出的JSON是:

{"name":"cote d'ivoire"}

到了JS里就变成了:

let json_data = '{"name":"cote d'ivoire"}';

这里d后面的单引号直接截断了前面的字符串,剩下的ivoire"}成了无意义的标识符,自然触发语法错误。

下面是两种可靠的修复方式:

方案1:直接输出JSON作为JS对象(推荐)

JSON本身就是合法的JS对象字面量(只要JSON里没有JS特有的值比如undefined,而json_encode不会生成这类值),完全不需要用JSON.parse,直接让PHP把JSON输出到JS变量里即可:

let data = <?php echo json_encode(["name" => "cote d'ivoire"]) ?>;

PHP最终会输出:

let data = {"name":"cote d'ivoire"};

JS会直接把它解析成对象,既简洁又彻底避免了引号冲突问题。

方案2:转义JSON中的单引号(保留JSON.parse的场景)

如果因为某些场景必须使用JSON.parse,那需要确保JS字符串里的单引号被转义。可以用PHP的json_encode加上JSON_HEX_APOS参数,把单引号转成Unicode转义序列\u0027:

let json_data = '<?php echo json_encode(["name" => "cote d\'ivoire"], JSON_HEX_APOS) ?>';
let data = JSON.parse(json_data);

或者用addslashes函数直接转义单引号:

let json_data = '<?php echo addslashes(json_encode(["name" => "cote d\'ivoire"])) ?>';
let data = JSON.parse(json_data);

这两种方式都会让最终的JS字符串变成合法的格式,JSON.parse就能正常解析了。

内容的提问来源于stack exchange,提问作者Davit Zeynalyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:16:27