码迷,mamicode.com
首页 > Web开发 > 详细

openresty如何对url进行解码

时间:2015-09-11 14:33:44      阅读:684      评论:0      收藏:0      [点我收藏+]

标签:

    URL编码是HTTP所使用的一种编码方式,用于在一个URL钟传送各种参数。这种编码方式会将特殊字符(如‘=‘、‘&‘、‘+‘)编码为‘%<xx>‘的形式,其中<xx>是字符的十六进制表示。此外,它还会将空格转化为"+"。例如,它会将字符串"a+b=c"编码为”a%2Bb+%3D+c"。最后,它会将每对参数名及其值用"="连接起来,并将每对结果name=value用"&"连接起来。例如,对于值:

    name = "a1"; query = "a+b  = c"; q="yes or no"

    会被编码为:

    "name=a1&query=a%2Bb+%3D+c&q=yes+or+no"

    现在要对这个URL进行解码,要求对编码中的每个值,及其名称作为key,保存到一个table内。一下函数完成一次基本的编码:

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

    用gmatch来对name=value进行解码。由于名称和值都不能包含"&"和"=",所以可以用模式"[^&=]+"来匹配它们:

cgi = {}
function decode (s)
    for name, value in string.gmatch(s, "([^&=]+)=([^&=]+)") do
        name = unescape(name)
        value = unescape(value)
         cgi[name] = value
    end
end

节选自《Lua程序设计第二版》第20章-20.5替换-20.5.1URL编码

openresty如何对url进行解码

标签:

原文地址:http://my.oschina.net/chrisforbt/blog/504889

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!