下面简要介绍一下发生的问题以及问题所在...... $ _POST [' domain_list']是一个用户可以通过换行符分隔的域数组(因此在\ n上爆炸) 第一个var转储给了我:
array(3) { [0]=> string(11) "google.com " [1]=> string(17) "websolutions.com " [2]=> string(12) "facebook.com" }
这就是我想要的 - 我在textarea中输入的3个主机名。
然后第一个foreach循环遍历该数组并将每个主机名分配给dns_get_record函数。
这导致我遇到的问题 - 内部的2个循环拉动IP和名称服务器,只拉取最后一个域。所以那些2 var转储看起来像:
array(5) { ["host"]=> string(12) "facebook.com" ["type"]=> string(1) "A" ["ip"]=> string(13) "173.252.120.6" ["class"]=> string(2) "IN" ["ttl"]=> int(900) } Hostname: facebook.com IP: 173.252.120.6
array(5) { ["host"]=> string(12) "facebook.com" ["type"]=> string(2) "NS" ["target"]=> string(17) "a.ns.facebook.com" ["class"]=> string(2) "IN" ["ttl"]=> int(172528) } Hostname: facebook.com NS: a.ns.facebook.com
array(5) { ["host"]=> string(12) "facebook.com" ["type"]=> string(2) "NS" ["target"]=> string(17) "b.ns.facebook.com" ["class"]=> string(2) "IN" ["ttl"]=> int(172528) } Hostname: facebook.com NS: b.ns.facebook.com
出于某种原因,主循环不像我期望的那样工作,我期望它循环遍历整个$ domain数组(你可以在第一个var_dump中看到它,它有所有3个域在数组中)
if ( isset( $_POST['domain_list'] ) ) {
$domain = $_POST['domain_list'];
$domain = explode( "\n", $domain );
var_dump( $domain );
foreach ( $domain as $entry ) {
$a_record = dns_get_record( $entry, DNS_A );
$nameservers = dns_get_record( $entry, DNS_NS );
foreach($a_record as $arr1) {
var_dump($arr1);
echo 'Hostname: '.$arr1['host'].' IP: '.$arr1['ip'] . '<br>';
}
foreach($nameservers as $arr2) {
var_dump($arr2);
echo 'Hostname: '.$arr2['host'].' NS: '.$arr2['target'] . '<br>';
}
}
} else {
echo "failed";
}
提前致谢!
答案 0 :(得分:0)
嗯,评论是正确的 - 我的代码实际上正常工作。我没有得到相同结果的原因是我在textarea的断线处爆炸的方式。
为了正确获取textarea中换行符所分隔的值,我更新了这一行:
$domain = explode( "\n", $domain );
到
$domain = explode( "\r\n", $domain );
令人惊讶的是,如此简单的事情可以让人如此疯狂!