使用preg_match验证主机URL

时间:2012-02-13 13:29:42

标签: regex validation url preg-match

这是我的实际功能:

public function _validate_host($url)
{
    $pattern = "/^([w]{2}([\w\-]+\.)?([\w]{2,5}))(:[\d]{1,5})?/";
    if (!preg_match($pattern, $url))
    {
        return FALSE;
    }

    return TRUE;
}

实时演示:http://regexr.com?300ag

实际模式确实只选择了一个网址:

www.my-url.com

我希望它与主机网址匹配:

my-url.com - if found, match.
my.server.com - if found, match.
www.my-url.com - if found, match.

http://www.my-url.com/ - if www.my-url.com found, match.

它也应该忽略(在检查时)http://(如果附加)然后它应该替换fe。以下网址:http://www.my-url.com/www.my-url.com

任何解决方案都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

尝试这个

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?

[a-z\-\:\/\.]+

这将获取URL,即使它们具有http://但您可以使用php中的str_replace从结果中删除http://。

答案 1 :(得分:0)

我的工作是:)

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