我可以对 PHP 数组进行 json_encode 并将值作为 JS RegExp 对象获取吗?

我有一些正则表达式模式作为字符串存储在 PHP 数组中。我需要将它们作为 JavaScript RegExp 对象输出。有没有办法通过使用 PHP 来做到这一点json_encode?


例子:


$array = [

   'regex' => '/some-regex/' 

];

return json_encode( $array );

期望的输出:


{"regex": /some-regex/}

电流输出:


{"regex": "/some-regex/"}


素胚勾勒不出你
浏览 127回答 2
2回答

Smart猫小萌

不直接用json_encode。PHP 所做的就是创建包含简单标量类型的数组和对象。它不能像创建 JS 对象那样RegExp直接调用 JS 函数。如果所有你要通是你总是可以做些什么的问题样本数据$array = [&nbsp; &nbsp;'regex' => '/some-regex/'&nbsp;];$js_string = '';foreach($array as $key => $value) $js_string .= '"' . $key . '": new RegExp("' . $value ' "),';return '{' . $js_string . '}';那是非常笨重的代码,当然,如果$array包含除正则表达式之外的任何内容,它就会分崩离析(并且假定其中的所有内容对 JS 都是安全的)。但如果这一切你必须做的......等待!有没有更好的办法?确实有。更好的做法是json_encode做它的事情(它有点用来处理 JSON)然后让你的 JS 自己创建对象let regex_list = <?php echo json_encode($array) ?>;let myregex = {};regex_list.forEach(function(regex, index) {&nbsp; &nbsp; myregex[index] = new RegExp(regex);});这是一个更清洁的解决方案。我们不必担心来自 PHP 的数据,因此 JS 可以从那里获取数据并构建一个 JS 对象,其中包含RegExp您要创建的所有对象

千巷猫影

不,你不能。因为您正在传递仅包装数据的 JSON 结构。json 标准的字符串以“开头并以”结尾,否则它是一个数字或数组。我想知道类似的事情。我想根据结果为 JS 创建一个函数,但在服务器端使用 php。通常,当您遇到此问题时,意味着您必须重新考虑页面/应用程序的结构。但是,正如他们在对您的问题的评论中指出的那样,一旦 HTTP 请求结束,您可能会找到在本地构建对象的解决方法。
打开App,查看更多内容
随时随地看视频慕课网APP