Lua例程以解码查询参数

有没有一种开放源代码的 Lua 程序,用于解码符合 RFC 3986 标准的查询参数?具体而言,查询参数可以通过 ; 或 & 进行分割,例如 field=value&field1=value1。怎么样才能知道特定的查询参数是由 ; 分隔的,比如 field=value;field1=value1。我可以尝试扫描令牌,但显然字段和值也可能包含 ;。 由于这是经常使用的功能,我想知道是否有一个 Lua 库可以处理所有的角落情况。

点赞
用户1190388
用户1190388

你可以使用Luasocket模块中的url名称空间来解析URL。文档在这里

示例代码(和输出)如下:

> l = require 'socket.url'
> x = 'https://mail.google.com/mail/u/0/?ui=2&pli=1#inbox'
> z = l.parse(x)
> for k, v in pairs(z) do print(k,v) end
host    mail.google.com
fragment    inbox
query   ui=2&pli=1
scheme  https
path    /mail/u/0/
authority   mail.google.com
2014-08-19 18:44:53