下面是我的正则表达式:/Name [Ss]ervers?:\s([\S]+\s){0,2}/
由于脚本将主要解析.co.uk和.com域,因此我有来自WhoIs的示例结果,如下所示;
.com:Name Server: NS1.EXAMPLE.COM NS2.EXAMPLE.COM
.co.uk Name servers: dns1.registrar-servers.com dns2.registrar-servers.com
因此,“Name Servers”的奇怪匹配结果之一是非复数和大写,而另一个则不是。
我用PHP编写脚本,匹配部分如下:
preg_match('/Name [Ss]ervers?:\s([\S]+\s){0,3}/', $whoisRes, $match)
代码可以为.com结果工作,但不能为.co.uk结果工作,我真不知道为什么!任何帮助都将不胜感激!
编辑:以下是一个.co.uk域的完整WhoIs响应:
WhoIs Result:
Domain name: example-domain.co.uk
Data validation: Nominet was not able to match the registrant's name and/or address against a 3rd party source on 23-Mar-2017
Registrar: eNom LLC [Tag = ENOM]
URL: http://www.enom.com
Relevant dates:
Registered on: 23-Mar-2017
Expiry date: 23-Mar-2019
Last updated: 26-Mar-2018
Registration status: Registered until expiry date.
Name servers: dns1.registrar-servers.com dns2.registrar-servers.com
WHOIS lookup made at 12:26:52 31-May-2018 -- This WHOIS information is provided for free by Nominet UK the central registry for .uk domain names. This information and the .uk WHOIS are: Copyright Nominet UK 1996 - 2018. You may not access the .uk WHOIS or use any data from it except as permitted by the terms of use available in full at https://www.nominet.uk/whoisterms, which includes restrictions on: (A) use of the data for advertising, or its repackaging, recompilation, redistribution or reuse (B) obscuring, removing or hiding any or all of this notice and (C) exceeding query rate or volume limits. The data is provided on an 'as-is' basis and may lag behind the register. Access may be withdrawn or restricted at any time.
显然还有更多的代码,请原谅我的混乱(我只是在制作实际脚本之前测试数据):
$re = '/(?:\G(?!\A)|Name Servers?:)\h*\K\S+/i';
if (preg_match_all($re, $whoisRes, $matches)) {
$name_servers = $matches;
}
if (preg_match('/Creation Date: ([0-9]+\-[0-9]+\-[0-9]+)/i',
$whoisRes, $match)) {
$domain_date = trim($match[1]);
$creation_date = strtotime(trim($match[1]));
$domainage = dateDiff("now", $creation_date) . "\n";
} elseif (preg_match('/Registered on: ([0-9]+\-[a-zA-Z]+\-[0-9]+)/i',
$whoisRes, $match)) {
$domain_date = trim($match[1]);
$creation_date = strtotime(trim($match[1]));
$domainage = dateDiff("now", $creation_date) . "\n";
} else {
$domainage = 'No Registration Date Found';
}
echo "URL: $url [$online]<br><br>";
echo "Load Time: $response_text [$overall_text]<br><br>";
echo "Name Servers:"; var_dump($name_servers); echo"<br><br>";
echo "Title: $title<br><br>";
echo "Description: $description<br><br>";
echo "Keywords: $keywords<br><br>";
echo "WhoIs Result: $whoisRes<br><br>";
echo "Domain Age: $domainage [$domain_date]<br><br>";
https://stackoverflow.com/questions/50622811
复制相似问题