সমস্যা: JSON স্ট্রিং-এ সিঙ্গেল কোট থাকলে HTML অ্যাট্রিবিউট ব্রেক হয়
সমাধান ১: PHP `json_encode` + `htmlspecialchars` (সার্ভার-সাইড রেন্ডারিং)
';
// আউটপুট: data-tags="[\"html5\",\"it\u0027s great\",\"tutorial\"]"
?>
সমাধান ২: ডাবল কোট অ্যাট্রিবিউট + JSON_HEX_APOS (সিম্পল)
সিঙ্গেল কোট সমস্যা নেই
echo '';
?>
সমাধান ৩: JavaScript-এ ডাইনামিক্যালি সেট (সার্ভার-সাইড এস্কেপিং ছাড়া)
কোনো এস্কেপিং লাগে না
// পাওয়ার সময়
const parsed = JSON.parse(el.dataset.tags); // ['html5', "it's great", 'tutorial']
স Faces অনুশীলন
- সার্ভার-সাইড রেন্ডারিং: `json_encode($arr, JSON_HEX_APOS | JSON_HEX_QUOT)` + `htmlspecialchars(..., ENT_QUOTES)` + ডাবল কোট অ্যাট্রিবিউট।
- ক্লায়েন্ট-সাইড: `element.dataset.prop = JSON.stringify(value)` — সবচেয়ে সফ এবং এস্কেপ-ফ্রি।
- যদি লিগেসি IE সাপোর্ট লাগে: `JSON_HEX_APOS` নেই, তখন `str_replace("'", "\\'", $json)`।