Простой ... не заключайте в кавычки json объект и не вызывайте JSON.parse()
.
let result = <?php echo json_encode($output); ?>;
Теперь result
является javascript объектом который готов к использованию.
Если вы правильно json_encode()
, ваша строка будет выглядеть следующим образом:
Код: ( Демо )
$array = [
"page_title" => "contact us",
"val" => [
"pattern" => "/email/\s+us\s*(.*?)/\s/",
"type" => "1"
]
];
echo json_encode($array);
Вывод:
{"page_title":"contact us","val":{"pattern":"\/email\/\\s+us\\s*(.*?)\/\\s\/","type":"1"}}
ps ваш шаблон регулярных выражений выглядит сомнительным с этими неэкранированными sla sh после электронной почты и после группы захвата, несмотря на то, что шаблон имеет косые черты в качестве разделителей.
Если это шаблон для выполнения js, вы можете добиться большего успеха с:
email\/\s+us\s*(.*?)\/\s
без разделителей, чтобы ваш шаблон мог использоваться функцией регулярного выражения в качестве переменной.
И если мой вышеупомянутый logi c недостаточно громко кричит, вот демо javascript, которое показывает, что json_encode()
не нужно addslashes()
:
Переменная ниже data
будет заполнен:
data = <?php echo json_encode([
"page_title" => "contact us",
"val" => [
"pattern" => "email\/\s+us\s*(.*?)\/\s",
"type" => "1"
]
]); ?>;
let data = {"page_title":"contact us","val":{"pattern":"email\\\/\\s+us\\s*(.*?)\\\/\\s","type":"1"}},
str = "You can email/ us all-day-long if you wish/ or not.";
console.log(data.page_title);
console.log(data.val.pattern);
regex = new RegExp(data.val.pattern,"g");
console.log(str.match(regex));
console.log(data.val.type);