Parsing 在Lua中解析URL之外的参数
我有一个URL,希望从中解析其参数,如:Parsing 在Lua中解析URL之外的参数,parsing,lua,coronasdk,Parsing,Lua,Coronasdk,我有一个URL,希望从中解析其参数,如: 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, "
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
我会称之为,并在-->
我已经修好了很多,而且似乎很管用,
但是,您能看看如何改进吗?我将返回表中的所有参数,并使用如下方式:
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'
我将返回表中的所有参数,并使用如下方式:
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'
也许吧。第一个案例“uname”不起作用。您需要删除该URL,gmatch才能正常工作。在for循环:s=s:match(“%s+(.+)”)之前的parseurl()中添加这一行。第一种情况“uname”不起作用。您需要删除该URL,gmatch才能正常工作。在for循环:s=s:match(“%s+(.+)”之前的parseurl()中添加此行