首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP中的名称服务器与正则表达式匹配时出现问题

PHP中的名称服务器与正则表达式匹配时出现问题
EN

Stack Overflow用户
提问于 2018-05-31 19:03:14
回答 1查看 125关注 0票数 1

下面是我的正则表达式:/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响应:

代码语言:javascript
复制
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.

显然还有更多的代码,请原谅我的混乱(我只是在制作实际脚本之前测试数据):

代码语言:javascript
复制
$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>";
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档