PHP validation/regex for URL

2022-08-30 07:01:41

我一直在为URL寻找一个简单的正则表达式,有人有一个方便的,效果很好吗?我没有找到一个带有zend框架验证类的,并且已经看到了几个实现。


答案 1

使用该函数验证字符串是否为 URL:filter_var()

var_dump(filter_var('example.com', FILTER_VALIDATE_URL));

在没有必要时使用正则表达式是不好的做法。

编辑:小心,这个解决方案不是unicode安全,也不是XSS安全。如果您需要复杂的验证,也许最好在其他地方查找。


答案 2

我在几个项目中使用了这个,我不相信我遇到过问题,但我确信它不是详尽无遗的:

$text = preg_replace(
  '#((https?|ftp)://(\S*?\.\S*?))([\s)\[\]{},;"\':<]|\.\s|$)#i',
  "'<a href=\"$1\" target=\"_blank\">$3</a>$4'",
  $text
);

结尾处的大多数随机垃圾都是为了处理像句子中这样的情况(以避免匹配尾随句点)。我相信它可以被清理,但由于它有效。我或多或少只是把它从一个项目复制到另一个项目。http://domain.example.


推荐