在eLUA中解析URL参数

时间:2017-04-19 08:23:20

标签: parsing url lua gsub

假设我有一个网址:http://ip/rgb/color?R=200&G=100&B=300

我如何将R,G和B的值变为单独的变量?我已经研究了g.sub,但我仍然没有得到它,解释只是代码,没有任何关于如何工作的话。

2 个答案:

答案 0 :(得分:2)

使用string.match和patterns:

local url = "http://ip/rgb/color?R=200&G=100&B=300"
local r,g,b= url:match("R=(%d+)&G=(%d+)&B=(%d+)")
print (r,g,b)

答案 1 :(得分:1)

这是一个更通用的解决方案,它将字段和值存储在表中,而不必知道字段的名称或顺序:

S=[[
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjGpbabuLDTAhUD5iYKHe2LAzcQFgglMAA&url=http%3A%2F%2Fwww.eluaproject.net%2F&usg=AFQjCNHWegTT2pHkN8L75iW2UZBA5_pOMQ&sig2=VxlaLWBWD81Hp8KF8ijw1Q
]]

t = {}
S = S:match(".-?(.*)$") .. "&"
for k,v in S:gmatch("(.-)=(.-)&") do
    t[k]=v
    print(k,v)
end

首先获取参数列表(第一个?之后的所有内容),最后添加&以保持一致性。然后,所有键值对的格式为 = &

将此代码应用于您的网址,您将获得t.Rt.Gt.B