Вам просто нужно думать о каждом слое по одному.
Сначала у вас есть данные ...
$blog->title
… и вы хотите поместить его в JavaScript. Таким образом, вы должны избежать этого, чтобы сделать его безопасным для JavaScript. json_encode
сделает это, потому что JSON является подмножеством JS. Поскольку вы помещаете строку, вы получаете строковый литерал JSON, поэтому вам не нужно добавлять кавычки вручную.
$js_safe_title = json_encode($blog->title);
$js_safe_body = json_encode($blog->body);
$js = "getData($js_safe_title, $js_safe_body);"
… и затем вы хотите поместить этот JS в атрибут HTML, поэтому вам нужно его исключить, чтобы сделать его безопасным для HTML:
$html_safe_js = htmlspecialchars($js);
Тогда вы можете поместить его в HTML:
onclick="<?=$html_safe_js?>"