根据维基百科,URI被定义为
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]仍然是假的。
但是,"http://somesite/page%20Zero“会给我True。
我可以得出这样的结论吗?在URI的“根级别”。不允许使用空格吗?或者我还漏掉了什么。
发布于 2012-11-14 07:49:35
您对URI的分解过于简单。“层次结构部分”包含authority和path。authority进一步细分为可选的用户名/密码、主机名和端口详细信息。
http://some site/page URI的主机名部分为"some“,这是无效的。
http://somesite/page zero URI将"somesite“作为主机名,这是有效的,并将"page zero”作为路径组件,这也是有效的。
发布于 2012-11-14 07:50:25
不允许,URL的域名部分不允许有空格。详情请看这里
http://www.thesitewizard.com/domain/domain-name-with-spaces-or-dots.shtml
http://www.netregister.biz/faqit.htm#1
发布于 2012-11-14 07:59:15
URI的hierarchical部分实际上由authority和path组件组成;有关详细信息,请参阅RFC 3986。
具体地说,您将看到path组件实际上是由pchars构建的,它可以是(以及其他内容)在this section中定义的“pct编码”字符,%20就是一个例子。
我在这里发布了一个解决URI验证问题的PHP解决方案,这可能会很有趣:
How to make this PHP URL parsing function nearly perfect?
代码粗略地根据RFC3986进行了验证,但有一些例外。
https://stackoverflow.com/questions/13370806
复制相似问题