Get details about domains or addresses with Whois.This php class can be used to get details about domains or IP addresses with Whois protocol. It can connect to the Whois server for a for a given top level domain and perform a query to retrieve information about that domain.
What is the Whois?
Official web site:- http://whois.net/
The Whois database is an online repository of information associated with registered domain names. It stores and publicly displays domain name information, such creation and expiration dates, the registrar of record, and its various contacts (registrant, billing, administrative, and technical).
Whois class file.
class Whois {
/**
* fsockopen port
*
* @var string
* @access private
*/
private $port = 43;
/**
* fsockopen Error Number
*
* @var string
* @access private
*/
private $errno;
/**
* fsockopen Error String
*
* @var string
* @access private
*/
private $errstr;
/**
* fsockopen Time Out
*
* @var string
* @access private
*/
private $timeout = 10;
/**
* Selected Server from $whoisservers based on TLD from $domain
*
* @var string
* @access private
*/
private $whoisserver;
/**
* Available Whois Servers
*
* @var array
* @access private
*/
private $whoisservers = array(
"ac" => "whois.nic.ac",
"ae" => "whois.nic.ae",
"aero" => "whois.aero",
"af" => "whois.nic.af",
"ag" => "whois.nic.ag",
"al" => "whois.ripe.net",
"am" => "whois.amnic.net",
"arpa" => "whois.iana.org",
"as" => "whois.nic.as",
"asia" => "whois.nic.asia",
"at" => "whois.nic.at",
"au" => "whois.aunic.net",
"az" => "whois.ripe.net",
"ba" => "whois.ripe.net",
"be" => "whois.dns.be",
"bg" => "whois.register.bg",
"bi" => "whois.nic.bi",
"biz" => "whois.biz",
"bj" => "whois.nic.bj",
"br" => "whois.registro.br",
"bt" => "whois.netnames.net",
"by" => "whois.ripe.net",
"bz" => "whois.belizenic.bz",
"ca" => "whois.cira.ca",
"cat" => "whois.cat",
"cc" => "whois.nic.cc",
"cd" => "whois.nic.cd",
"ch" => "whois.nic.ch",
"ci" => "whois.nic.ci",
"ck" => "whois.nic.ck",
"cl" => "whois.nic.cl",
"cn" => "whois.cnnic.net.cn",
"com" => "whois.verisign-grs.com",
"coop" => "whois.nic.coop",
"cx" => "whois.nic.cx",
"cy" => "whois.ripe.net",
"cz" => "whois.nic.cz",
"de" => "whois.denic.de",
"dk" => "whois.dk-hostmaster.dk",
"dm" => "whois.nic.cx",
"dz" => "whois.ripe.net",
"edu" => "whois.educause.edu",
"ee" => "whois.eenet.ee",
"eg" => "whois.ripe.net",
"es" => "whois.ripe.net",
"eu" => "whois.eu",
"fi" => "whois.ficora.fi",
"fo" => "whois.ripe.net",
"fr" => "whois.nic.fr",
"gb" => "whois.ripe.net",
"gd" => "whois.adamsnames.com",
"ge" => "whois.ripe.net",
"gg" => "whois.channelisles.net",
"gi" => "whois2.afilias-grs.net",
"gl" => "whois.ripe.net",
"gm" => "whois.ripe.net",
"gov" => "whois.nic.gov",
"gr" => "whois.ripe.net",
"gs" => "whois.nic.gs",
"gw" => "whois.nic.gw",
"gy" => "whois.registry.gy",
"hk" => "whois.hkirc.hk",
"hm" => "whois.registry.hm",
"hn" => "whois2.afilias-grs.net",
"hr" => "whois.ripe.net",
"hu" => "whois.nic.hu",
"ie" => "whois.domainregistry.ie",
"il" => "whois.isoc.org.il",
"in" => "whois.inregistry.net",
"info" => "whois.afilias.info",
"int" => "whois.iana.org",
"io" => "whois.nic.io",
"iq" => "vrx.net",
"ir" => "whois.nic.ir",
"is" => "whois.isnic.is",
"it" => "whois.nic.it",
"je" => "whois.channelisles.net",
"jobs" => "jobswhois.verisign-grs.com",
"jp" => "whois.jprs.jp",
"ke" => "whois.kenic.or.ke",
"kg" => "www.domain.kg",
"ki" => "whois.nic.ki",
"kr" => "whois.nic.or.kr",
"kz" => "whois.nic.kz",
"la" => "whois.nic.la",
"li" => "whois.nic.li",
"lt" => "whois.domreg.lt",
"lu" => "whois.dns.lu",
"lv" => "whois.nic.lv",
"ly" => "whois.nic.ly",
"ma" => "whois.iam.net.ma",
"mc" => "whois.ripe.net",
"md" => "whois.ripe.net",
"me" => "whois.meregistry.net",
"mg" => "whois.nic.mg",
"mil" => "whois.nic.mil",
"mn" => "whois.nic.mn",
"mobi" => "whois.dotmobiregistry.net",
"ms" => "whois.adamsnames.tc",
"mt" => "whois.ripe.net",
"mu" => "whois.nic.mu",
"museum"=> "whois.museum",
"mx" => "whois.nic.mx",
"my" => "whois.mynic.net.my",
"na" => "whois.na-nic.com.na",
"name" => "whois.nic.name",
"net" => "whois.verisign-grs.net",
"nf" => "whois.nic.nf",
"nl" => "whois.domain-registry.nl",
"no" => "whois.norid.no",
"nu" => "whois.nic.nu",
"nz" => "whois.srs.net.nz",
"org" => "whois.pir.org",
"pl" => "whois.dns.pl",
"pm" => "whois.nic.pm",
"pr" => "whois.uprr.pr",
"pro" => "whois.registrypro.pro",
"pt" => "whois.dns.pt",
"re" => "whois.nic.re",
"ro" => "whois.rotld.ro",
"ru" => "whois.ripn.net",
"sa" => "whois.nic.net.sa",
"sb" => "whois.nic.net.sb",
"sc" => "whois2.afilias-grs.net",
"se" => "whois.iis.se",
"sg" => "whois.nic.net.sg",
"sh" => "whois.nic.sh",
"si" => "whois.arnes.si",
"sk" => "whois.ripe.net",
"sm" => "whois.ripe.net",
"st" => "whois.nic.st",
"su" => "whois.ripn.net",
"tc" => "whois.adamsnames.tc",
"tel" => "whois.nic.tel",
"tf" => "whois.nic.tf",
"th" => "whois.thnic.net",
"tj" => "whois.nic.tj",
"tk" => "whois.dot.tk",
"tl" => "whois.nic.tl",
"tm" => "whois.nic.tm",
"tn" => "whois.ripe.net",
"to" => "whois.tonic.to",
"tp" => "whois.nic.tl",
"tr" => "whois.nic.tr",
"travel"=> "whois.nic.travel",
"tv" => "tvwhois.verisign-grs.com",
"tw" => "whois.twnic.net.tw",
"ua" => "whois.net.ua",
"ug" => "whois.co.ug",
"uk" => "whois.nic.uk",
"us" => "whois.nic.us",
"uy" => "nic.uy",
"uz" => "whois.cctld.uz",
"va" => "whois.ripe.net",
"vc" => "whois2.afilias-grs.net",
"ve" => "whois.nic.ve",
"vg" => "whois.adamsnames.tc",
"wf" => "whois.nic.wf",
"ws" => "whois.website.ws",
"yt" => "whois.nic.yt",
"yu" => "whois.ripe.net"
);
/**
* Domain Name (URL or IP Address)
*
* @var string
* @access public
*/
public $domain;
/**
* Full URL
*
* @var string
* @access public
*/
public $url;
/**
* Domain Array containing Domain and TLD
*
* @var array
* @access public
*/
public $domainarray;
/**
* Returned Whois Text
*
* @var string
* @access public
*/
public $data;
/**
* Constructor
*
* Create Google Translate Object and Convert $string
*
* domain; // 'example.com'
* echo $whois->url; // 'http://example.com'
* echo $whois->domainarray[0]; // 'com'
* echo $whois->domainarray[1]; // 'example'
* echo $whois->data; // [ ... whois data ... ]
*
* $whoisFull = new Whois("http://www.example.com");
* echo $whoisFull->domain; // 'example.com'
* echo $whoisFull->url; // 'http://www.example.com'
* echo $whoisFull->domainarray[0]; // 'com'
* echo $whoisFull->domainarray[1]; // 'example'
* echo $whoisFull->data; // [ ... whois data ... ]
*
* $whoisIP = new Whois("123.45.678.90");
* echo $whoisIP->domain; // '123.45.678.90'
* echo $whoisIP->url; // 'http://123.45.678.90'
* echo $whoisIP->domainarray[0]; // NULL
* echo $whoisIP->domainarray[1]; // NULL
* echo $whoisIP->data; // [ ... whois data ... ]
* ?>
*
*
* @param string $domain URL or IP Address
* @access public
*/
function __construct($domain){
$this->domain = $domain;
$this->domain = rtrim($this->domain, "/");
$this->domain = preg_replace('/http:\/\//', '', $this->domain);
$this->url = (substr($this->domain,0,7) != 'http://') ? 'http://'.$this->domain:$this->domain;
if(!preg_match('/(\d+).(\d+).(\d+).(\d+)/', $this->domain)){
$this->domainarray = split("\.", $this->domain);
$this->domainarray = array_reverse($this->domainarray);
$this->domain = $this->domainarray[1].'.'.$this->domainarray[0];
}
if(strlen($this->domain)>0){
foreach($this->whoisservers as $tld=>$server) {
if(substr($this->domain, -strlen($tld)) == $tld) {
$this->whoisserver = $server;
break;
}
}
if(!$this->whoisserver){
if(preg_match('/(\d+).(\d+).(\d+).(\d+)/', $this->domain)) $this->whoisserver = "whois.arin.net";
else $this->data = "Error: No appropriate Whois server found for {$this->domain} domain!";
}
if($result = $this->queryServer()) {
preg_match("/Whois Server: (.*)/", $result, $matches);
$secondary = $matches[1];
if($secondary) {
$this->whoisserver = $secondary;
$result = $this->queryServer();
}
$this->data = $result;
}
else {
$this->data = "Error: No results retrieved from $whoisserver server for {$this->domain} domain!";
}
}
}
private function queryServer(){
$out = "";
$fp = @fsockopen($this->whoisserver, $this->port, $this->errno, $this->errstr, $this->timeout);
fputs($fp, $this->domain . "\r\n");
while(!feof($fp)) $out .= fgets($fp);
fclose($fp);
if(strlen($out)>0) return $out;
else return false;
}
}
Get domain details with whois
$domainName = 'google.com'; //instantiate Whois object $whois = new Whois($domainName); //show the results from the whois lookup echo ''.htmlspecialchars($whois->data).'';
View Demo
Download JQuery Example (30 KB)