2011-02-16 55 views
3

我一直在编码一个域检查器,真的坚持与PHP。这是我迄今为止:编码一个域名查找工具

<?php 
set_time_limit(0); 
ob_start(); 
$domain = $_GET['domain']; 
########### Extensions to be checked 
$extensions = array(
    '.com'  => array('whois.crsnic.net','No match for'), 
    '.info'  => array('whois.afilias.net','NOT FOUND'), 
    '.net'  => array('whois.crsnic.net','No match for'), 
    '.co.uk' => array('whois.nic.uk','No match'),   
    '.nl'  => array('whois.domain-registry.nl','not a registered domain'), 
    '.ca'  => array('whois.cira.ca', 'AVAIL'), 
    '.name'  => array('whois.nic.name','No match'), 
    '.ws'  => array('whois.website.ws','No Match'), 
    '.be'  => array('whois.ripe.net','No entries'), 
    '.org'  => array('whois.pir.org','NOT FOUND'), 
    '.biz'  => array('whois.biz','Not found'), 
    '.tv'  => array('whois.nic.tv', 'No match for'), 
); 
########### 

if(isset($domain)) 
{ 
    $newdomain = str_replace(array('www.', 'http://'), NULL, $domain); 
    $finaldomain = str_replace($extensions, NULL, $newdomain); 

    if(strlen($finaldomain) > 0) 
    { 
     foreach($extensions as $extension => $who) 
     { 
      $buffer = NULL; 

      $sock = fsockopen($who[0], 43) or die('Error Connecting To Server:' . $server); 
      fputs($sock, $finaldomain.$extension . "\r\n"); 

       while(!feof($sock)) 
       { 
        $buffer .= fgets($sock,128); 
       } 

      fclose($sock); 

      if(eregi($who[1], $buffer)) 
      { 
       echo '<h4 class="available"><span>Available</span>' . $finaldomain. '<b>' . $extension .'</b> is Available</h4>'; 
      } 
      else 
      { 
       echo '<h4 class="taken"><span>Taken</span>' . $finaldomain . '<b>' .$extension .'</b> is Taken</h4>'; 
      } 
      echo '<br />'; 

      ob_flush(); 
      flush(); 
      sleep(0.3); 

     } 
    } 
    else 
    { 
     echo 'Please enter the domain name'; 
    } 
} 
?> 

我遇到的问题是,我不知道我怎么能从传递的域中删除扩展。

然后,当它返回结果时,我希望它们键入的扩展名成为结果列表中的第一个。

我是新来的PHP,但需要这个为我的项目。所有帮助赞赏。

由于 乔

+0

乔你有没有得到这个工作?我很想尝试一个副本? – BenRacicot 2014-02-17 16:41:29

回答

1

所有的第一,延伸称为顶级域(缩写TLD)。其次,.co.uk不是顶级域名,.uk是。它还有其他子域名,如.org.uk,.gov.uk等。

现在,返回一个文件名/域名延伸部分,你可以使用pathinfo

$tld = pathinfo('helloworld.co.uk', PATHINFO_EXTENSION); 
echo $tld; // uk 

您可能需要修改你的阵列删除圆点你已经把那里的标题,或简单地说:

$tld = '.' . pathinfo('helloworld.co.uk', PATHINFO_EXTENSION); 
$whois_server = $extensions[$tld]; 
+0

嗨,谢谢你的回复。我意识到tld和那个,但是为了编码这个想法,最好把它写成这样:)。我有点困惑你的意思。由于pathinfo()只是将.uk位存储在$ tld变量中。我会用$ tld做一个str_replace()来从$域中删除它。现在,如果它只删除.uk位的方式,我已经将代码添加到了它,它将查找example.co.com,example.co.co.uk等等......再加上一次删除它,我将如何安排结果所以(tld)是第一个。加上你在哪里得到$ whois_server,再次感谢netcoder为你的伟大答案。 :) – Joe2010glas 2011-02-16 22:04:14

1

而不是每个你可以查询TLD.whois-servers.net TLD所有这些域名注册服务器。

Wikipedia

whois-servers.net提供DNS别名 记录(CNAME)的TLD WHOIS服务器形式.whois-servers.net的 。 GNU WHOIS实用程序自动使用 使用whois-servers.net服务。