16

PHPを使用してホスト名をIPアドレスに解決するにはどうすればよいですか。ただし、別のネームサーバー(OpenDNSGoogle Public DNSなど)を使用します。

(TCP / IP設定またはで)現在システムに設定されているものとは異なるネームサーバーを使用できないようdns_get_record()です。gethostbyname()/etc/resolv.conf

私が見つけた唯一の方法は、PEARクラスのNet / DNSを使用することですが、PHP5.4では多くの警告が表示されます。

4

3 に答える 3

11
<?
require_once 'Net/DNS2.php';

$resolver = new Net_DNS2_Resolver( array('nameservers' => array('208.67.222.123')) );

$resp = $resolver->query("hooktube.com.", 'A');

print_r($resp);

echo $resp->answer[0]->address;
于 2012-07-19T18:52:10.270 に答える
8

net_dns2を試してください(PEAR にもあります)。

于 2012-07-19T16:50:26.717 に答える
6

スクリプトからシェル スクリプトを実行することが許可されている場合は、システムのnslookupコマンドを使用できます。

$host = 'stackoverflow.com';
$dns = '8.8.8.8';  // Google Public DNS

$ip = `nslookup $host $dns`; // the backticks execute the command in the shell

$ips = array();
if(preg_match_all('/Address: ((?:\d{1,3}\.){3}\d{1,3})/', $ip, $match) > 0){
    $ips = $match[1];
}

print_r($ips);

注:およびがユーザー入力からの場合escapeshellargに使用します。$host$dns

于 2012-07-19T18:26:47.327 に答える