我试图弄清楚如何$obj->setAttribute()
在设置属性时使用单引号,以便我可以在其中放置一个 JSON 数组。
这是我想要完成的基础知识。
$code = '<img src="http://example.com/image.jpg">';
$array = array(
'code' => htmlspecialchars($code),
'string' => $string
);
$tag->setAttribute('data-stuff', json_encode($array));
现在一切都很好,但是 JSON 使用双引号,并且新标签也使用双引号。
<tag data-stuff="{"code":"<img src="http://example.com/image.jpg">","string":"some string"}">
这是一个问题,因为该属性需要使用单引号,因此它不会干扰 JSON 的双引号。由于 JSON 包含转换为特殊字符的 HTML,这一事实更加复杂。因此,如果我要将 JSON 转换为特殊字符,那么当我尝试对其进行解码时,“代码”也会被解码,这在尝试使用 JavaScript 获取它时可能会导致各种问题。
有谁知道我可以将周围的“data-stuff”属性的容器标签转换为单个字符的干净方法?我更喜欢这个选项而不是转义 json 引号。