使用 idn_to_ascii 函数将中文域名转换为 IDNA ASCII 兼容格式
以 . 为条件切割域名为数组
循环获得第一个.后面的字符串 匹配whois服务器,成功就跳出循环
输出
//获取域名 whois 服务器
function get_whois_server($domain){
$domain = idn_to_ascii($domain, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46);
if(preg_match("/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/",$domain)){
$re["status"]="error";
$re["message"]="Use IP Lookup";
return $re;
}
if(!preg_match("/^([-a-zA-Z0-9]{1,100})\.([-a-z0-9\.]{2,})$/i", $domain)){
$re["status"]="error";
$re["message"]="Error:Wrong format!";
return $re;
}
global $whoisservers;
$whoisserver = "";
$domain_arr=explode(".",$domain);
$domains=$domain;
foreach($domain_arr as $k => $v){
$apex_domains=$domains;
$dotpos=strpos($domains,".");
$domains=strtolower(substr($domains,$dotpos+1));
if(isset($whoisservers[$domains])){
$whoisserver = $whoisservers[$domains];
$apex_domain=idn_to_utf8($apex_domains,IDNA_DEFAULT,INTL_IDNA_VARIANT_UTS46);
$gTLD=$domains;
break;
}
}
if(!$whoisserver or $whoisserver=="unknown") {
$re["status"]="error";
$re["message"]="No appropriate Whois server found for $domain domain!";
return $re;
}
$re["status"]="success";
$re["domain"]=$apex_domain;
$re["gTLD"]=$gTLD;
$re["whois_server"]=$whoisserver;
return $re;
}
返回信息
{
"action": "whois_server",
"query": "dasd199.小孩采集.中国",
"status": "success",
"domain": "小孩采集.中国",
"gTLD": "xn--fiqs8s",
"whois_server": "cwhois.cnnic.cn"
}