gpt4 book ai didi

php - 我如何在 json 中传递这个 javascript 对象?

转载 作者:行者123 更新时间:2023-11-29 22:16:44 24 4
gpt4 key购买 nike

我正在编写一个 firefox 扩展,它使用 pagemod 和从 url 获取的正则表达式列表。

var pageMod = require("page-mod");
var Request = require("request").Request;
var hosters = Request({
url: "http://foo.bar/foo",
onComplete: function (response) {
console.log(response.json.urls);
var includeHosters = response.json.urls;
pageMod.PageMod({
include: includeHosters,
contentScriptWhen: "start",
contentScript: '',
onAttach: function onAttach(worker) {
// my code
}
});
}
}).get();

来 self 的服务器的响应如下所示:

{
"urls": [
"/.*foo.*/",
"/.*bar.*/"
]
}

问题是正则表达式只有在没有被引号包围时才有效。

这个有效:

 include: [/.*foo.*/, /.*bar.*/],

这不起作用:

 include: ["/.*foo.*/", "/.*bar.*/"],

Json 要求字符串用引号括起来。

在服务器端,我使用 PHP 并将正则表达式放在这样的数组中:

<?
$regexes = array(".*foo.*",".*bar.*");
echo json_encode(array("urls" => $regexes));

这会产生 firefox 无法处理的输出。

如何将我的正则表达式传递给 firefox 扩展?

也许我需要在扩展端做一些 str_repl 的事情?

但是怎么办?我怎样才能正确地做到这一点?

最佳答案

JSON 格式没有为正则表达式定义任何内容,您必须在解码后构建它们。

假设您有这个已解析的数组:

var strs = [".*foo.*", ".*bar.*"];

然后你可以像这样制作一个正则表达式数组:

var regexs = strs.map(function(v){ return new RegExp(v) });

如果您更喜欢使用 / 发送您的正则表达式字符串,如

var strs = ["/.*foo.*/", "/.*bar.*/"];

然后你可以做

var regexs = strs.map(function(v){ return new RegExp(v.slice(1,-1)) });

关于php - 我如何在 json 中传递这个 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com