如何在php上使用whois响应数据获取域过期日期?
如何在php上使用whois响应数据获取域过期日期 通常我使用whois响应来检查域可用性 例如:检查如何在php上使用whois响应数据获取域过期日期?,php,Php,如何在php上使用whois响应数据获取域过期日期 通常我使用whois响应来检查域可用性 例如:检查DRGDRGDRGRGDRG.COM如果whois响应数据中有word不匹配则表示此域可用 No match for domain "DRGDRGDRGRGDRG.COM". 但现在我想使用whois响应数据检查域过期日期,如下所示 Domain Name: GOOGLE.COM Registrar: MARKMONITOR INC. Sponsoring Registrar IANA ID:
DRGDRGDRGRGDRG.COM
如果whois响应数据中有word不匹配
则表示此域可用
No match for domain "DRGDRGDRGRGDRG.COM".
但现在我想使用whois响应数据检查域过期日期,如下所示
Domain Name: GOOGLE.COM
Registrar: MARKMONITOR INC.
Sponsoring Registrar IANA ID: 292
Whois Server: whois.markmonitor.com
Referral URL: http://www.markmonitor.com
Name Server: NS1.GOOGLE.COM
Name Server: NS2.GOOGLE.COM
Name Server: NS3.GOOGLE.COM
Name Server: NS4.GOOGLE.COM
Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Updated Date: 20-jul-2011
Creation Date: 15-sep-1997
Expiration Date: 14-sep-2020
我该怎么做?谢谢这不是一个解析响应字符串的简单问题,因为它可能在第一时间听起来很简单,因为域名注册商提供的信息格式不同 我想我们有两个选择:
composer.json
文件
{
"require": {
"phpwhois/phpwhois":"dev-master",
"mso/idna-convert": "0.9.1"
}
}
请注意,最新的phphois
版本不适用于最新的idna convert
版本,这就是为什么我必须在我的需求中指定它
执行composer install
下载库
最后是用于查询域的PHP脚本:
<?php
require(__DIR__ . '/vendor/autoload.php');
use phpWhois\Whois;
$whois = new Whois();
$whois->deepWhois = true;
$query = isset($argv[1]) ? $argv[1] : 'google.com';
$result = $whois->lookup($query);
$registered = isset($result['regrinfo']['registered']) && $result['regrinfo']['registered'] == 'yes';
if (!$registered) {
echo 'Domain: '.$query.' not registered.'.PHP_EOL;
} else {
if (isset($result['regrinfo']['domain']['expires'])) {
echo 'Domain: '.$query.PHP_EOL;
echo 'Expired: '.$result['regrinfo']['domain']['expires'].PHP_EOL;
} else {
echo 'Domain: '.$query.PHP_EOL;
echo 'Trying to find expires date...'.PHP_EOL;
foreach ($result['rawdata'] as $raw) {
if (strpos($raw, 'Expiry Date:') !== false) {
echo 'Expired: '.trim(explode(':', $raw)[1]).PHP_EOL;
}
}
}
}
您可以在原始响应数据中搜索“过期日期”,或者根据解析数据的经验执行更好的逻辑(如果愿意)。图书馆完全应该这样做,但有时会失败
if (strpos($raw, 'Expiry Date:') !== false) {
echo 'Expired: '.trim(explode(':', $raw)[1]).PHP_EOL;
}