Php 在JSON编码的HTML5数据属性中转义/编码单引号

Php 在JSON编码的HTML5数据属性中转义/编码单引号,php,json,html,custom-data-attribute,Php,Json,Html,Custom Data Attribute,在PHP中,我使用json\u encode()来回送HTML5数据属性中的数组。 正如JSON所要求的那样,JSON\u encode()生成用双引号封装的值。因此,我使用单引号包装数据属性,如: <article data-tags='["html5","jquery","php","test's"]'> 您需要将HTML转义数据回显到HTML中: printf('<article data-tags="%s">', htmlspecialchars(jso

在PHP中,我使用
json\u encode()
来回送HTML5数据属性中的数组。 正如JSON所要求的那样,
JSON\u encode()
生成用双引号封装的值。因此,我使用单引号包装数据属性,如:

<article data-tags='["html5","jquery","php","test's"]'>

您需要将HTML转义数据回显到HTML中:

printf('<article data-tags="%s">',
    htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
printf(“”,
htmlspecialchars(json_编码(数组('html5',…)),ENT_引号,'UTF-8');

或使用内置选项:

json_encode(array('html5', ...), JSON_HEX_APOS)

你可以在手册中查到:

你是说它工作的意思是“缺点”?我是说“十六进制编码可能产生意外的副作用”的意思是“缺点”?你没有展示任何代码如何输出某些东西,所以答案只能是一个很好的猜测。我的问题比具体问题更笼统:我想,总的来说,处理十六进制编码需要做些什么。@Jérémy它应该能工作,就像在,我无法想象它不能工作的情况,但这确实是一件错误的事情。HTML转义任何可能破坏HTML语法的值,就这么简单。+1始终在输出中使用适当的编码,这是唯一的方法。无效的代码点(如
\x00
需要根据X(HT)ML规范进行十六进制编码)。为了简单起见,htmlspecialchars(json_encode($arrayData)、ENT_引号、'UTF-8')我使用
htmlspecialchars(json_encode($arrayData)、ENT_引号、'UTF-8')进行json_编码。
如何解码?非常感谢。我不知道这个选择。它工作得很好。