PHP中验证URL是否合法

在代码中,很常会校验这校验那,判断数据类型或是否满足特定规则,比如校验URL。在php中:

1 使用正则表达式:

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

有个做了关于所有URL正则表达式的测试: https://mathiasbynens.be/demo/url-regex

2 使用PHP内置函数:

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

注意,这个方法有xxs的风险,同时在PHP5.2大版本中有个bug,就是带’-‘号的链接匹配不出来,如:”www.a-b-c.com”匹配不到。

码中人 微信公众号