我试图让允许ARGS所以表中的任何规定ARGS不在白名单中我的表是从ARGS表中删除的白名单。
local args = {
"99",
"lollypop",
"tornado",
"catid",
"CATID",
"filter_mediaType",
"one",
"10",
}
local args_whitelist = {
"beforeafter",
"catid",
"childforums",
"display",
"element_id",
"element_type",
"exactname",
"filter_mediaType",
"filter_order",
"filter_order_Dir",
"filter_search",
"filter_tag",
"format",
"id",
"Itemid",
"layout",
"limit",
"limitstart",
"messageid",
"more",
"option",
"order",
"ordering",
"quality",
"query",
"recently",
"recip",
"reply_id",
"return",
"searchdate",
"searchf",
"searchphrase",
"searchuser",
"searchword",
"sortby",
"start",
"task",
"tmpl",
"token",
"view",
"component",
"path",
"extension"
}
--[[
Do something here to eleminate and remove unwanted arguments from table
]]
--args[key] = nil --remove the arguement from the args table
print(args) --[[ Output i want based of my whitelist of allowed arguments only
catid
filter_mediaType
]]
我怎样才能让我的代码检查ARGS表对我的白名单表中,然后运行我的删除功能从ARGS表中删除垃圾ARGS。
我建议改变你whitelist
以允许简单的检查。这可以通过反向运行上表允许既快速检查和易维护的,由尼科尔流星锤指出来完成。
反相填充工作表与索引字符串的数字表whitelist
,允许if语句是一个简单地从ARGS价值的指标检查。
然后,您可以通过args
列表循环,并检查arg是在whitelist
。如果它出现在whitelist
值添加到一个新的列表,我将在我的例子中使用approved
。检查所有然后设置args
的args = approved
在此之后清除任何未经批准的值表。
local args = {
"99",
"lollypop",
"tornado",
"catid",
"CATID",
"filter_mediaType",
"one",
"10",
"beforeafter",
}
local function invert_table(target)
local t = {}
for k,v in pairs(target) do
t[v] = k
end
return t
end
local args_whitelist = invert_table(args_whitelist)
local approved = {}
for _,v in pairs(args) do
if args_whitelist[v] then
approved[#approved + 1] = v
end
end
args = approved