javascript - 我可以 json_encode 一个 PHP 数组并将值作为 JS RegExp 对象获取吗?
问题描述
我有一些正则表达式模式存储为 PHP 数组中的字符串。我需要将它们作为 JavaScript RegExp 对象输出。有没有办法通过使用 PHP 来做到这一点json_encode
?
例子:
$array = [
'regex' => '/some-regex/'
];
return json_encode( $array );
期望的输出:
{"regex": /some-regex/}
电流输出:
{"regex": "/some-regex/"}
解决方案
不直接用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
对象包含您要创建的所有对象
推荐阅读
- git - 在 Android Studio 中查看当前打开文件的 GIT 历史记录
- html - django 最后一个标签对象不可下标
- rest - 没有复数的 Rest API 命名约定
- arrays - 生成指向numpy数组的指针列表
- java - Java 程序测试使用 Groovy 使用 maven 获得 0 测试运行
- python - CSV Python 阅读器
- c - 如何在 C 中创建指向现有文件或目录的硬链接?
- angular - 未正确添加授权标头
- powerapps - 如何根据 Powerapps 中的其他列提取列项?
- javascript - Reactjs-Redux:即使在用户登录后,mapStateToProps 也会返回 user is authenticated as first,然后是 true