2011-02-16 50 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服務。