在 Lua 中解析 URL 中的参数

编程入门 行业动态 更新时间:2024-10-27 06:25:49
本文介绍了在 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/link.php uname=Hans+Testmann&uemail=myemail%40gmail&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"
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'
print(t.utext ) --> 'Now this is working great'

这篇关于在 Lua 中解析 URL 中的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-03-29 03:33:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/747833.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:参数   Lua   URL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!