简单...不要用单引号包裹您的 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 你的正则表达式模式看起来有问题,尽管模式有斜杠作为分隔符,但在电子邮件之后和捕获组之后的那些未转义的斜杠。
如果此模式适用于 js 执行,您可能会在以下方面取得更好的成功:
email\/\s+us\s*(.*?)\/\s
没有分隔符,以便您的模式可以被正则表达式函数用作变量。
如果我的上述逻辑不够响亮,这里有一个 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);