【问题标题】:Host url validation using preg_match使用 preg_match 验证主机 url
【发布时间】:2012-02-13 13:29:42
【问题描述】:

这是我的实际功能:

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

实际模式只选择一个 url,如:

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

我们将不胜感激任何解决方案。

【问题讨论】:

  • return TRUE / FALSE 取决于if 条件?认真的吗?
  • @hsz 不,这只是一个字迹,它应该匹配。

标签: regex validation url preg-match


【解决方案1】:

试试这个

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

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

即使 URL 有 http://,这也会获取它们,但是您可以在 php 中使用 str_replace 从结果中删除 http://。

【讨论】:

  • 您的第二种模式似乎无法正常工作。但是第一个很好,但它在某些情况下无效,例如:my-url.com/ - 它不应该传递这样的 url,因为最后有一个斜线 /,你能解决这个问题吗?
【解决方案2】:

我是靠这个工作的:)

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

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2016-09-06
    • 2012-02-09
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多