2017-03-20 25 views
2

PHPを使用してウェブサイトのDNSレコードを印刷しています。しかし、私が期待している結果は、私が得たものとは異なるものです。ここで私は取得していますコードと出力は次のようになります。どうすればこの出力を得ることができますか?

<?php 
$domain = "php.net"; 
$result = dns_get_record($domain,DNS_ANY); 
echo '<pre>'; 
echo json_encode(array('domain'=>$domain,'data'=>$result), JSON_PRETTY_PRINT); 
?> 

出力:

{ 
    "domain": "php.net", 
    "data": [ 
    { 
     "AAAA": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "ipv6": "2a02:cb41::7" 
     } 
     ] 
    }, 
    { 
     "TXT": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "txt": "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all", 
      "entries": [ 
      "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all" 
      ] 
     } 
     ] 
    }, 
    { 
     "MX": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 30, 
      "pri": 0, 
      "target": "php-smtp2.php.net" 
     } 
     ] 
    }, 
    { 
     "SOA": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "mname": "ns1.php.net", 
      "rname": "admin.easydns.com", 
      "serial": 1484930803, 
      "refresh": 16384, 
      "retry": 2048, 
      "expire": 1048576, 
      "minimum-ttl": 2560 
     } 
     ] 
    }, 
    { 
     "A": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 185, 
      "ip": "72.52.91.14" 
     } 
     ] 
    }, 
    { 
     "NS": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "target": "dns3.easydns.org" 
     } 
     ] 
    }, 
    { 
     "NS": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "target": "dns3.easydns.org" 
     } 
     ] 
    }, 
    { 
     "NS": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "target": "dns3.easydns.org" 
     } 
     ] 
    }, 
    { 
     "NS": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "target": "dns3.easydns.org" 
     } 
     ] 
    } 
    ] 
} 

がさえ、私が知りたいのですが:

{ 
    "domain": "php.net", 
    "data": [ 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "AAAA", 
      "ipv6": "2a02:cb41::7" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "TXT", 
      "txt": "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all", 
      "entries": [ 
       "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all" 
      ] 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 30, 
      "type": "MX", 
      "pri": 0, 
      "target": "php-smtp2.php.net" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "SOA", 
      "mname": "ns1.php.net", 
      "rname": "admin.easydns.com", 
      "serial": 1484930803, 
      "refresh": 16384, 
      "retry": 2048, 
      "expire": 1048576, 
      "minimum-ttl": 2560 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 185, 
      "type": "A", 
      "ip": "72.52.91.14" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "NS", 
      "target": "dns3.easydns.org" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "NS", 
      "target": "dns2.easydns.net" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "NS", 
      "target": "dns1.easydns.com" 
     }, 
     { 
      "host": "php.net", 
      "class": "IN", 
      "ttl": 300, 
      "type": "NS", 
      "target": "dns4.easydns.info" 
     } 
    ] 
} 

が、私はこのようになり出力を期待していますDNS_ALLではなくDNS_ANYが機能するのはなぜですか?また、どのように私は、出力に重複した項目を避けることができますか?に関連するレコードが繰り返される出力を見ることができます。
この質問の回答を教えてください。

+0

なぜ「aaaa」は小文字で、残りは大文字ですか? :) –

+0

@AlexandrKapustin:P私の間違い..私は期待した出力を表示しようとしていた、その小文字を作った... –

答えて

3
<?php 
$domain = "php.net"; 
$result = dns_get_record($domain,DNS_ANY); 
$data = []; 
foreach ($result as $item) { 
    $type = $item['type']; 
    unset($item['type']); 
    $data[] = [$type => [$item]]; 
} 

echo '<pre>'; 
echo json_encode(array('domain'=>$domain,'data'=>$data), JSON_PRETTY_PRINT); 
関連する問題