Php 使用dns_获取_记录()的问题

Php 使用dns_获取_记录()的问题,php,dns,Php,Dns,我正在尝试用PHP制作一个工具,它将简单地列出输入域的区域文件的组件。但是,我们遇到了一个恼人的错误,对于A/AAAA/CNAME记录,它拒绝作为数组的成员打印数据 $NS = dns_get_record($url, DNS_NS); $MX = dns_get_record($url,DNS_MX); $A = dns_get_record($url,DNS_A); $AAAA = dns_get

我正在尝试用PHP制作一个工具,它将简单地列出输入域的区域文件的组件。但是,我们遇到了一个恼人的错误,对于A/AAAA/CNAME记录,它拒绝作为数组的成员打印数据

            $NS = dns_get_record($url, DNS_NS);
            $MX = dns_get_record($url,DNS_MX);
            $A = dns_get_record($url,DNS_A);
            $AAAA = dns_get_record($url,DNS_AAAA);
            $CNAME = dns_get_record($url,DNS_CNAME);
            $SRV = dns_get_record($url,DNS_SRV);
            $A6 = dns_get_record($url,DNS_A6);
            $ALL = dns_get_record($url,DNS_ALL);
            $TXT = dns_get_record($url,DNS_TXT);

            //Nameservers
            echo "<br/><h4>$url's NS(Name Server) records are:</h4><br/>";
            //echo $nameserver;
            foreach ($NS as $dump) {
                echo $dump['target'], "</br>";
            }

            // MX Servers
            echo "<br/><h4>$url's MX(Mail Exchanger) records are:</h4><br/>";
            foreach ($MX as $dump) {
                echo $dump['target'], "</br>";
            }

            //A record servers

            echo "<br/><h4>$url's A records are:</h4><br/>";
            $fuck = var_dump($A);
            foreach ($A as $dump) {
                echo $dump['target'], "</br>";
            }


            //AAAA Record Servers
            echo "<br/><h4>$url's AAAA records are:</h4><br/>";
            foreach ($AAAA as $dump) {
                echo $dump['target'], "</br>";
            }

            //CNAME Record Servers
            echo "<br/><h4>$url's CNAME records are:</h4><br/>";
            foreach ($CNAME as $dump) {
                echo $dump['target'], "</br>";
            }
            //SRV Records
            echo "<br/><h4>$url's SRV records are:</h4><br/>";
            foreach ($SRV as $dump) {
                echo $dump['target'], "</br>";
            }

            //A6 Records
            echo "<br/><h4>$url's A6 records are:</h4><br/>";
            foreach ($A6 as $dump) {
                echo $dump['target'], "</br>";
            }

            //TXT records

            echo "<br/><h4>$url's TXT records are:</h4><br/>";
            foreach ($TXT as $dump) {
                echo $dump['target'], "</br>";
            }
以A记录为例,当我进行VAR_转储时,它似乎显示了信息,尽管格式令人难以置信地丑陋。但是,显示的循环似乎没有任何作用。我还注意到,在这种情况下,信息丢失可能是由于其他记录拒绝显示,例如我测试了我的一个域和FTP。记录未能在此显示

$url是从$_POST['url']传递的,它的格式为example.com,没有任何http或任何前面或后面的垃圾

我如何让我的循环以一种好的方式返回完整的区域文件?我是否误解了阵列的工作原理,或者我只是做了一些很基本但很愚蠢的事情

对于没有可用目标的A记录,请检查

您只有4个基本属性可供所有人使用,因此您必须选择在哪个循环中打印什么。如果要显示所有属性,当然也可以使用双循环:

foreach ($A as $dump) {
  foreach ($dump as $key => $value) {
    echo "{$key}: {$value}<br>";
  }
}

请参阅。

如何更精确地处理打印出来的元素?这是否也可能与cname和AAAA记录的问题相同?@user3407675您可以使用双循环,就像我刚才添加的示例中一样。您也可以构建一个包含所有属性的表,但这需要更多的逻辑。现在似乎可以正确打印出来,谢谢!同样的技术可能也会让我的AAA/CNAME记录出现吗?@user3407675当然,它只会显示实际存在的内容。