PHP+Linuxで指定URLのWhoisを取得するためのスクリプトです。
手順としては、
① 指定URLのホスト部分だけ抜き出し
② Linuxのwhoisコマンドを使ってwhois情報取得
③ 取得できなかった場合、ホストをいじって再取得
④ 繰り返し
です。
実際に書きます。
相変わらず適当なので、コンパイルエラーとか出たらすみませんw
こんな感じですね。
全くエラー処理とかしてないので、
split_host()のトコでhostが見つからなかったりしたら
処理止めたりしてください。
手順としては、
① 指定URLのホスト部分だけ抜き出し
② Linuxのwhoisコマンドを使ってwhois情報取得
③ 取得できなかった場合、ホストをいじって再取得
④ 繰り返し
です。
実際に書きます。
相変わらず適当なので、コンパイルエラーとか出たらすみませんw
<?php
// whoisを取りたいURL
$url = "http://example.com/dir/";
// ホスト部抜き出し
$host = split_host($url);
// ホストを「.」できっておく
$sep = split("\.", $host);
for($i=0; $i<count($sep); $i++){
// LinuxコマンドにてWhois取得
$whois = shell_exec("whois " . $host);
// 「No match!!」が含まれてたら取得失敗
$flag = strstr($whois, "No match!!");
if($flag){
// ホストを前から順番に1オクテットずつ消していく
$host = str_replace($sep[$i] . ".", "", $host);
}else{
// ループ終了
break;
}
}
// 出力
echo $whois;
/**
* URLからホスト部を抜き出す
*/
function split_host($url){
$host = "";
$pattern = '/(http|https):\/\/([-._a-z\d]+)/';
if(preg_match($pattern, $url, $matche)){
$host = $matche[2];
}
return $host;
}
?>
こんな感じですね。
全くエラー処理とかしてないので、
split_host()のトコでhostが見つからなかったりしたら
処理止めたりしてください。