Long standing issue:
To get correct ld-json double quotes should be escaped in sublayouts/snippets.php.
Something like
"description":"<?php $escdescription = str_replace('"','\"',$description); echo $escdescription; ?>",
should be sufficient (line 80).
or maybe directly an htmlspecialchars?
I see in the code before
if (empty($description)){
if (!empty($product->product_s_desc)){
$description = htmlspecialchars(strip_tags($product->product_s_desc));
} else {
$description = htmlspecialchars(strip_tags($product->product_desc));
}
}
I've seen this code as well and used the extra variable to not to "disturb" any other functionality or overwrite because it's a problem with LD-JSON only in some cases (eg product wheel size like 2" or height 19" in description).
AFAIR it's no problem when using TinyMCE or JCE but, using them can cause other problems especially when there is an update after you tweaked them a bit. Some automatic behaviour of those editors look comfortable, but ... .
how works this for you?
if (empty($description)){
if (!empty($product->product_s_desc)){
$description = $product->product_s_desc;
} else {
$description = $product->product_desc;
}
}
$description = str_replace('"','\"',htmlspecialchars(strip_tags($description)));
About this problem,
why you dont use an Object and PHP json_encode function?
This is 100% safe