php的json_encode()总是使用双引号作为字符串分隔符吗?

我有一个包含字符串作为值的PHP关联数组,我将其编码为JSON并将其存储在html-data属性中.这是由一些JS读取的.

到现在为止还挺好.

现在,我需要为数据属性使用单引号,否则上下文切换.

<section id="settings" data-settings='{"some":"val"}'>
</section>

问题是,我可以依靠PHPjson_encode()函数来编码始终使用双引号的字符串吗?令人惊讶的是,我似乎无法找到相关信息.我只查找数组值中带引号问题的人的文章.

提前致谢.

最佳答案:

是的,正如JSON规范中所定义的那样,分隔符将始终为“.但是,值可能包含’字符,这会破坏您的HTML.为了保持简单而不担心可能会或可能不会造成问题,HTML-逃避你的价值!

<section data-settings="<?= htmlspecialchars(json_encode($foo)); ?>"></section>

无论您输入什么值或如何编码它们,这都可以保证始终有效.请注意,htmlspecialchars认只编码“,而不是”;因此必须使用“作为HTML中的分隔符(或更改认的转义行为).

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...