如何使用http和没有它来preg_match url

时间:2013-02-04 16:16:37

标签: php url-shortener

我正在处理一个短路脚本,当涉及http://与URL一起传递时遇到了问题。

问题:如果用户未在其中提供带有http://的链接,则脚本无法处理它并返回无效的网址错误,而不是因为preg_match应该发生的错误解析http,https和没有其中任何一个的链接。

这是负责检查http

的代码snippt
$url = $_REQUEST['url'];  

  if(!preg_match("/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i", $url)) {  
    $html = "<h1 id='upc' style='padding:8px 8px;text-align:center;'>Error: invalid URL</h1>";  
  } else {  
    $url = $_REQUEST['url'];  

修复它并允许解析http&amp;的最佳方法是什么? https和解析没有http或https的链接

1 个答案:

答案 0 :(得分:0)

您可以使用filter_var()

if (filter_var($url, FILTER_VALIDATE_URL)) {
    // $url is valid
} else {
    // $url is NOT valid
}

它不检查协议是否有效(所以foo://www.foo.com/bar验证但foo:/\www.foo.com/bar没有),但这是一个开始。根据文档,parse_url()并非用于验证网址。