哪些字符使URL无效?

这些url是否有效?

example.com/file [/] . html http://example.com/file [/] . html


当前回答

这并不是对你的问题的真正答案,但验证URL确实是一个严肃的p.i.t.a。你可能最好验证域名,并留下URL的查询部分。这是我的经验。

您还可以通过ping URL来查看它是否会得到一个有效的响应,但是对于这样一个简单的任务来说,这可能有点太过了。

正则表达式检测url是丰富的,谷歌它:)

其他回答

我正在实现一个旧的HTTP(0.9, 1.0, 1.1)请求和响应读取器/写入器。请求URI是最有问题的地方。

你不能只使用RFC 1738、2396或3986。有许多旧的HTTP客户端和服务器允许更多的字符。因此,我根据意外发布的web服务器访问日志进行了研究:“GET URI HTTP/1.0”200。

我发现在uri中经常使用以下非标准字符:

\ { } < > | ` ^ "

这些字符在RFC 1738中被描述为不安全的。

如果你想兼容所有旧的HTTP客户端和服务器,你必须允许这些字符出现在请求URI中。

请在oghttp-request-collector中阅读更多关于这项研究的信息。

我不能评论以上的答案,但我想强调的是,并非所有地方都允许使用允许的字符。例如,域名不能有下划线,因此http://test_url.com无效。

我提出了一些PHP正则表达式,可以将文本中的url转换为锚标记。(首先它转换所有的www。url到http://,,然后转换所有的url与https?:// to a href=…HTML链接

美元管柱= preg_replace (' / (https ?:\/\/)([!#$&-;=?\-\[\]_ a - z ~ %] +) / sim’,'“$ 1 $ 2”< a href = > $ 2 < / a > ', preg_replace(' /(±s) ( \.)([!#$&-;=?\-\[\]_ a - z ~ %] +) / sim’' $ 1http: / / $, $管柱));

这并不是对你的问题的真正答案,但验证URL确实是一个严肃的p.i.t.a。你可能最好验证域名,并留下URL的查询部分。这是我的经验。

您还可以通过ping URL来查看它是否会得到一个有效的响应,但是对于这样一个简单的任务来说,这可能有点太过了。

正则表达式检测url是丰富的,谷歌它:)

所有可以在URI中使用的有效字符(URL是URI的一种类型)都在RFC 3986中定义。

所有其他字符都可以在URL中使用,只要它们是“URL编码”的。这涉及为特定的“代码”更改无效字符(通常是百分号(%)后面跟着十六进制数的形式)。

此链接HTML URL Encoding Reference包含无效字符的编码列表。