如何分组相同名称但不同的tld。
例如google.com,google.co.id,google.co.jp等
我想将google.*
全部归为google
。
这是我从http referer
获取主机的代码。
if (isset($_SERVER["HTTP_REFERER"])) {
$referal = $_SERVER["HTTP_REFERER"];
$host_referal = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
}
else {
$referal = "Unknown";
}
答案 0 :(得分:1)
在这里吐痰,我没有考虑任何边缘情况。
代码:(Demo)
$referers=['https://google.com','https://www.google.co.id','http://www.google.co.jp']; // $_SERVER['HTTP_REFERER']
foreach($referers as $referer){
if(!$referer || !$host=parse_url($referer,PHP_URL_HOST)){ // sometimes $_SERVER['HTTP_REFERER'] is not delivered
echo "couldn't parse missing/malformed url";
}else{
echo preg_match('~(?:https?://)?(?:www\.)?\K[^.]+~',$host,$out)?$out[0]:'';
echo "\n";
}
}
输出:
google
google
google
如果出现这种情况,请提供破解输入字符串,以便我可以调整方法。
P.S。事实是,你可能只需要打电话就可以逃脱:
$referal=preg_match('~^(?:https?://)?(?:www\.)?\K[^.]+~',$_SERVER["HTTP_REFERER"],$out)?$out[0]:'Unknown'
但StackOverflow上有很多帖子声明这个值不安全,因此使用parse_url()
可以让您更安心。