【发布时间】:2013-01-15 10:45:08
【问题描述】:
我正在想办法让$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 引号。
【问题讨论】:
标签: php json dom quotes setattribute