$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の引用符をエスケープするよりも、そのオプションの方がはるかに好きです。