为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
素胚勾勒不出你 2021-08-28 10:05:53
我有一些正则表达式模式作为字符串存储在 PHP 数组中。我需要将它们作为 JavaScript RegExp 对象输出。有没有办法通过使用 PHP 来做到这一点json_encode?例子:$array = [   'regex' => '/some-regex/' ];return json_encode( $array );期望的输出:{"regex": /some-regex/}电流输出:{"regex": "/some-regex/"}
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

不直接用json_encode。PHP 所做的就是创建包含简单标量类型的数组和对象。它不能像创建 JS 对象那样RegExp直接调用 JS 函数。如果所有你要通是你总是可以做些什么的问题样本数据


$array = [

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

];

$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) {

    myregex[index] = new RegExp(regex);

});

这是一个更清洁的解决方案。我们不必担心来自 PHP 的数据,因此 JS 可以从那里获取数据并构建一个 JS 对象,其中包含RegExp您要创建的所有对象


查看完整回答
反对 回复 2021-08-28
?
千巷猫影

TA贡献1829条经验 获得超7个赞

不,你不能。因为您正在传递仅包装数据的 JSON 结构。json 标准的字符串以“开头并以”结尾,否则它是一个数字或数组。

我想知道类似的事情。我想根据结果为 JS 创建一个函数,但在服务器端使用 php。通常,当您遇到此问题时,意味着您必须重新考虑页面/应用程序的结构。

但是,正如他们在对您的问题的评论中指出的那样,一旦 HTTP 请求结束,您可能会找到在本地构建对象的解决方法。


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信