解析 eLUA 中的 URL 个参数
Parsing URL parameters in eLUA
假设我有一个 URL 比如:http://ip/rgb/color?R=200&G=100&B=300
如何将 R、G 和 B 的值放入单独的变量中?我查看了 g.sub 但我仍然完全不明白,解释只是代码,没有进一步说明任何东西是如何工作的。
使用string.match和模式:
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)
这是一个更通用的解决方案,可以将字段和值存储在 table 中,而无需知道字段的名称或顺序:
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
它首先获取参数列表(第一个 ?
之后的所有内容),在末尾添加 &
以保持统一。那么所有的键值对都是key=
value&
.
的形式
将此代码应用于您的 URL,您将获得 t.R
、t.G
、t.B
。
假设我有一个 URL 比如:http://ip/rgb/color?R=200&G=100&B=300
如何将 R、G 和 B 的值放入单独的变量中?我查看了 g.sub 但我仍然完全不明白,解释只是代码,没有进一步说明任何东西是如何工作的。
使用string.match和模式:
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)
这是一个更通用的解决方案,可以将字段和值存储在 table 中,而无需知道字段的名称或顺序:
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
它首先获取参数列表(第一个 ?
之后的所有内容),在末尾添加 &
以保持统一。那么所有的键值对都是key=
value&
.
将此代码应用于您的 URL,您将获得 t.R
、t.G
、t.B
。