Есть функция которая превращает в php объект или массив в строку и выводит ее в js.
ниже как я это делаю
<script>
<?php $str = json_encode($value); ?>
var <?php echo $key?> = JSON.parse('<?php echo $str;?>'.replace(/\r?\n/g, ""));
</script>
Проблема в том в получаемом json
может лежать html и собственно у атрибутов тегов есть двойные кавычки, что в результате приводит к Uncaught SyntaxError: Unexpected token w in JSON at position 469. Как можно за экранировать такие скобки?
UPD приведу полный код функции возможно это поможет лучше меня понять))
function VarToJS ($vars) {
if(gettype($vars) !== "array") return; ?>
<script type="application/javascript">
<?php foreach ($vars as $key => $value): ?>
<?php
if (gettype($value) === "resource" || gettype($value) === "unknown type") continue;
elseif (gettype($value) === "array" || gettype($value) === "object") {
$str = json_encode($value);
?>
var <?php echo $key?> = JSON.parse(`<?php echo $str;?>`.replace(/\r?\n/g, ""));
<?php } elseif(gettype($value) === "boolean" ||
gettype($value) === "integer" ||
gettype($value) === "double" ||
gettype($value) === "NULL" ) {?>
var <?php echo $key?> = <?php echo $value;?>;
<?php } elseif(gettype($value) === "string") {?>
var <?php echo $key;?> = "<?php echo $value;?>";
<?php } ?>
<?php endforeach; ?>
</script>
<?php
}