php – 检查输入的URL是否来自某个域

前端之家收集整理的这篇文章主要介绍了php – 检查输入的URL是否来自某个域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用户可以输入URL的字段.我需要检查该网址是否来自某个域,在本例中为google.com.

我试过这个,但它不适用于所有情况(我在下面列出):

if(strstr(parse_url($link,PHP_URL_HOST),'google.com') { // continue }

> http://www.google.com/blah – 工作
> https://www.google.com/blah – 作品
> google.com/blah – 不起作用
> www.google.com/blah – 无效

没有正则表达式有没有办法做到这一点?如果没有,怎么办呢?

谢谢.

parse_url需要有效的网址且google.com/blah无效(截至 PHP 5.3.3) – 因此无法使用.作为解决方法,您可以附加http(如果尚不存在),然后检查域.

使用以下功能

function checkRootDomain($url) 
{
    if (!preg_match("~^(?:f|ht)tps?://~i",$url)) {
        $url = "http://" . $url;
    }

    $domain = implode('.',array_slice(explode('.',parse_url($url,PHP_URL_HOST)),-2));
    if ($domain == 'google.com') {
        return True;
    } else {
        return False;
    }

}

测试用例:

var_dump(checkRootDomain('http://www.google.com/blah'));
var_dump(checkRootDomain('https://www.google.com/blah '));
var_dump(checkRootDomain('google.com/blah'));
var_dump(checkRootDomain('www.google.com/blah '));

结果:

bool(true) 
bool(true) 
bool(true) 
bool(true)

这是我自己的答案here修改版本.

希望这可以帮助!

猜你在找的PHP相关文章