【发布时间】:2011-11-23 07:19:17
【问题描述】:
我有这个 url 正则表达式模式:
$pattern = "@\b(https?://[^\s()<>\[\]\{\}]{1,".$max_length_allowed_for_each_url."}(?:\([\w\d]+\)|([^[:punct:]\s]|/)))@";
它似乎可以很好地验证我扔给它的任何 URL,直到我意识到 https://http://google.com(显然甚至 stackoverflow 都在考虑一个有效的 URL(它使该 URL 可点击,而不是我,尽管它确实删除了一个冒号)所以也许我不走运?)是一个有效的 URL,但它肯定不是。
我做了一些研究...并了解到我 should be using filter_var instead of a regex for PHP URL validation 无论如何...并且很失望地意识到它也容易受到同样的验证问题的影响。
我可以轻松征服它:
str_replace(array("https://http://","http://https://"), array("http://","https://"), $url);
但是……这似乎太不对了。
【问题讨论】:
标签: php regex validation url