使用 PHP 获取 whois 数据?
Using PHP to get whois data?
我正在遍历数据库中的行以从 whois 结果中获取信息。
这是我现在拥有的:
function GetEmailFromWhois($domain){
$whois = new Whois();
$query = $domain;
$whois->deep_whois=TRUE;
$result = $whois->Lookup($query, false);
$raw_data = $result["rawdata"];
$email = "";
foreach($raw_data as $item){
$items = explode(":",$item);
if($items[0] == "Registrant Email"){
$email = $items[1];
}
}
return $email;
}
上面的代码从 whois 结果中获取 Registrant Email
。
我稍后在我的代码中引用它是这样的:$email = GetEmailFromWhois($domain);
不过,在收到注册邮箱的同时,我还想收到Registrant Name
、Registrant Phone
和Registrant Country
。
我可以为每个额外的字段再复制上面的代码 3 次,但这会导致每个域有 4 个 whois 查询 - 而不是一个。
任何人都知道我如何在单个查询中获取我需要的信息,然后在我的代码中稍后使用它?
正如我最近在另一个回答中指出的那样,。任何标准都没有指定 WHOIS 响应的确切格式,并且并非所有 registries/registrars 都会使用您在此处尝试解析的格式。 (有些使用不同的标签来标记您正在搜索的字段,有些使用没有上下文的模糊标签,有些根本不标记某些字段,有些甚至不会包含您在这里搜索的信息。 ) 更糟糕的是,一些 registries/registrars 会严重限制您的评分,如果您明显试图从他们那里提取多个回复。简而言之,我建议您尽可能避免尝试解析 WHOIS 响应。
不过,要解决您的即时问题,您可以创建一个关联数组来表示 WHOIS 响应,如下所示:
$arr = [];
foreach($raw_data as $item) {
list($k, $v) = explode(":", $item);
$arr[$k] = $v;
}
这将为您提供结果的关联数组,因此您可以使用
等方式提取单个值
$email = $arr["Registrant Email"];
我正在遍历数据库中的行以从 whois 结果中获取信息。
这是我现在拥有的:
function GetEmailFromWhois($domain){
$whois = new Whois();
$query = $domain;
$whois->deep_whois=TRUE;
$result = $whois->Lookup($query, false);
$raw_data = $result["rawdata"];
$email = "";
foreach($raw_data as $item){
$items = explode(":",$item);
if($items[0] == "Registrant Email"){
$email = $items[1];
}
}
return $email;
}
上面的代码从 whois 结果中获取 Registrant Email
。
我稍后在我的代码中引用它是这样的:$email = GetEmailFromWhois($domain);
不过,在收到注册邮箱的同时,我还想收到Registrant Name
、Registrant Phone
和Registrant Country
。
我可以为每个额外的字段再复制上面的代码 3 次,但这会导致每个域有 4 个 whois 查询 - 而不是一个。
任何人都知道我如何在单个查询中获取我需要的信息,然后在我的代码中稍后使用它?
正如我最近在另一个回答中指出的那样,
不过,要解决您的即时问题,您可以创建一个关联数组来表示 WHOIS 响应,如下所示:
$arr = [];
foreach($raw_data as $item) {
list($k, $v) = explode(":", $item);
$arr[$k] = $v;
}
这将为您提供结果的关联数组,因此您可以使用
等方式提取单个值$email = $arr["Registrant Email"];