neturl
这个小型 Lua 库提供了一些函数,用于轻松解析带有查询字符串的 URL 并构建新的 URL。
$ opm get liyo/neturl
一个强大的 Lua URL 解析器和构建器
这个小型 Lua 库提供了一些函数,用于轻松解析带有查询字符串的 URL 并构建新的 URL。
> url = require "net.url"
查询字符串解析器
该库支持查询字符串中的括号,例如 PHP。这意味着您可以使用括号构建多维表。解析后的查询字符串有一个 tostring() 辅助函数。与 Lua 一样,如果没有指定索引,则从索引 1 开始。
> query = url.parseQuery("first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last")
> = query
a[1]=123&a[2]=false&a[3]=last&b[1]=str&c[1]=3.5&first=abc
> = query.a[1]
123
URL 解析器
该库将 URL 转换为 RFC 中描述的元素表:方案、主机、路径等。
> u = url.parse("http://www.example.com/test/?start=10")
> = u.scheme
http
> = u.host
www.example.com
> = u.path
/test/
URL 规范化
> = url.parse("http://www.FOO.com:80///foo/../foo/./bar"):normalize()
http://www.foo.com/foo/bar
URL 解析器
URL 解析遵循 RFC 2396 中提供的示例。
> = url.parse("http://a/b/c/d;p?q"):resolve("../../g")
http://a/g
查询字符串构建器
> u = url.parse("http://www.example.com")
> u.query.foo = "bar"
> = u
http://www.example.com/?foo=bar
> u:setQuery{ json = true, skip = 100 }
http://www.example.com/?json=true&skip=100
与 luasocket/url.lua 的区别
Luasocket/url.lua 无法解析 http://www.example.com?url=net,因为没有路径。
Luasocket/url.lua 无法清理和规范化 url,例如删除默认端口、端口中的额外零、空授权、大写方案、域名。
Luasocket/url.lua 不会解析查询字符串参数。
Luasocket/url.lua 与 RFC 2396 的兼容性较差,并且会将
http://a/b/c/d;p?q
和:../../../g
解析为http://ag
而不是http://a/g
../../../../g
解析为http://a../g
而不是http://a/g
g;x=1/../y
解析为http://a/b/c/g;x=1/../y
而不是http://a/b/c/y
/./g
解析为http://a/./g
而不是http://a/g
g;x=1/./y
解析为http://a/b/c/g;x=1/./y
而不是http://a/b/c/g;x=1/y
作者
Bertrand Mansion
许可证
mit
版本
-
liyo/neturl 0.9.0这个小型 Lua 库提供了一些函数,用于轻松解析带有查询字符串的 URL 并构建新的 URL。 2019-05-31 04:19:00