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

LUA 捕获模式 URL编码的例子解析

时间:2016-03-08 00:10:17      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

function escape(s)
 s=string.gsub(s,"([&=+%c])",function(c) return string.format("%%%02X",string.byte(c)) end )
 s=string.gsub(s," ","+")
 return s
end

  第一个gsub , [ ]中 匹配 & = + 及其他符号 %c 中的任意一个 替换为 格式化成 以 % 开头的(%%) %02X 两位不足补0 的十六进制数

  第二个gsub , 匹配 空格 替换为 +

function encode(t)
 local s=""
 for k,v in pairs(t) do
  s = s .."&" ..escape(k).."="..escape(v)
 end
 return string.sub(s,2)

  以&开头,用escape转换特殊字符 将表中数据格式化为k=v的形式

t = {name=al,query=a+b=c,q=a or b}

print(encode(t)) --query=a%2Bb%3Dc&q=a+or+b&name=al

 

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

匹配 %开头的(%%) %x%x十六进制的两位数 先转成10进制 然后通过ASCLL翻译成字符

 

LUA 捕获模式 URL编码的例子解析

标签:

原文地址:http://www.cnblogs.com/HuuBlog/p/5252212.html

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