彻底检查输入的字符串是否为URL

时间:2011-12-27 17:40:11

标签: php string preg-match

到目前为止我有这个代码,它会检查它前面是否有http://如果输入了“google.co.uk”,它会在前面添加http://它

然而,当人们说“你好”它然后在它前面添加http://并将其计为URL时它不会出现。我需要能够检查最后是否有后缀的东西。

function checkURL($url) {

if (empty($url)) 

{
    return $url;


}
 else {

 if (preg_match('[a-z0-9-]i', $url)) {

    return $url;

    } else {

if (preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) {
return $url;

}
else { 

    $url = 'http://'.$url.'';
    return $url;
    }

}

然后再次进行简单的检查。

请帮忙!

2 个答案:

答案 0 :(得分:4)

不要重新发明轮子。

使用它:

if (filter_var('someurl.com', FILTER_VALIDATE_URL) === true) {

http://php.net/manual/en/function.filter-var.php

答案 1 :(得分:0)

John Gruber here

提出了一个很好的正则表达式