在Lua中从URL解析参数 [英] Parse parameters out of URL in Lua
本文介绍了在Lua中从URL解析参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个URL,想从中解析出其参数,例如:
I have a URL and would like to parse its Parameter out of it, like:
function unescape (s)
s = string.gsub(s, "+", " ")
s = string.gsub(s, "%%(%x%x)", function (h)
return string.char(tonumber(h, 16))
end)
return s
end
function parseurl (s,param)
for k, v in string.gmatch( s, "([^&=?]+)=([^&=?]+)" ) do
--t[k] = v
if k == param then
--print (k.." "..v)
return unescape(v)
end
end
s = "http://www.page.com/link.php uname=Hans+Testmann&uemail=myemail%40gmail.com&utext=Now+this+is+working+great.%0D%0A++&mdt=1#&mydays:themeupload"s
比我称呼它并获得->
Than I would call it and get Results like after -->
parseurl (s, "uname") --> "Hans Testmann"
parseurl (s, "uemail") --> "myemail@gmail.com"
parseurl (s, "utext") --> "Now this is working great"
我已经修复了很多东西,并且似乎可以工作, 但是您能看一下如何改善它吗?
I already fixed a lot and seems to work, but could you look how its possible to improve?
推荐答案
我将返回表中的所有参数,并按如下方式使用:
I would return all parameters in a table and use like so:
function urldecode(s)
s = s:gsub('+', ' ')
:gsub('%%(%x%x)', function(h)
return string.char(tonumber(h, 16))
end)
return s
end
function parseurl(s)
s = s:match('%s+(.+)')
local ans = {}
for k,v in s:gmatch('([^&=?]-)=([^&=?]+)' ) do
ans[ k ] = urldecode(v)
end
return ans
end
t = parseurl(s)
print(t.uname ) --> 'Hans Testmann'
print(t.uemail) --> 'myemail@gmail.com'
print(t.utext ) --> 'Now this is working great'
这篇关于在Lua中从URL解析参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文