确定URL是否包含某个主机名


Determining if a URL contains a certain hostname

我需要为php preg_match创建一个正则表达式,用于执行以下匹配。

这是函数

function isValidURL($url,$searchfor){
    return preg_match("/'b.$searchfor 'b/i", $url);
}

我需要在下面找到somedomain.com进入函数

的可能字符串<>之前http://www.somedomain.comhttp://somedomain.comhttp://www.somedomain.com/anythinghttp://somedomain.com/anythinghttp://anything/somedomain.com之前

所以我需要一个正则表达式来做这个

<>之前http://www.somedomain.com将匹配http://somedomain.com将匹配http://www.somedomain.com/anything将匹配http://somedomain.com/anything将匹配之前

,

<>之前http://anything/somedomain.com不匹配

使用parse_url()如何?

if( strpos(parse_url($url, PHP_URL_HOST), 'somedomain.com') !== false )
{
  // hostname contains 'somedomain.com'.
}

试试这个…

$url = "http://komunitasweb.com/";
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?   (d+)?/?/i', $url)) {
    echo "Your url is ok.";
} else {
    echo "Wrong url.";
}

复制自谷歌搜索"php url正则表达式"。看看谷歌,很棒的工具。: -)

所需要的只是URL开头的占位符。排除带有否定字符类[^/]的斜杠可能已经足够了:

function isValidURL($url,$searchfor){
    return preg_match("~http://[^/'s]*'.$searchfor(/|$|'s)~i", $url);
}

注意,这在某些边缘情况下会失败,比如user:pw@对。不知道你的$searchfor是否已经包含了顶级域名。别忘了加preg_quote