【发布时间】:2020-07-04 02:36:30
【问题描述】:
如何将以下字符串视为无效的 URL 路径,因为它实际上包含主机名而不代表有效路径:
/<>//google.com
通过使用以下正则表达式验证代码:
preg_match(""/(?:[\w-]+\.)+[\w-]+/"", $url, $matches);
我目前收到true 两个:
/<>//google.com 和 /3.2/
而“/3.2/”是合法的 URL 路径而不是域名
【问题讨论】:
-
网址验证很难。
-
为什么不使用 url 库而不是正则表达式?
-
@DanielA.White 你熟悉一个好的库 API 来验证它吗?
-
公平地说,
google.com可以 成为有效路径的一部分,从技术上讲...没有什么可以阻止你拥有像www.mysite.com/sitemap/for/google.com这样的东西,如果你愿意的话。 -
问题是
www.domain.com/google.com可能是一个有效的 URL(技术上),所以你需要拼凑一些东西来解析路径组件并拒绝特定的东西; is 是关于字符串google.com的,它会使路径无效但 notgoogle.html(例如)或google.womble?从技术上讲,它们都很好。
标签: php regex validation url