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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LUA 捕获模式 URL编码的例子解析相关的知识,希望对你有一定的参考价值。

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编码的例子解析的主要内容,如果未能解决你的问题,请参考以下文章

URL的反向解析

URL 格式错误,无法解析

Django中的URL解析有两种模式

高速掌握Lua 5.3 —— 字符串库

URL中文编码解码

快速掌握Lua 5.3 —— 字符串库