希望有人能帮我看看这个问题。应用场景:从区域文件中获取DNS记录,以便运行shell_exec将其导入到另一个平台。我试图获取所有类型的DNS记录,包括A记录、CNAME、TXT、MX等。目前我已经成功地获取了CNAME、TXT和MX记录。但是在获取A记录时却遇到了问题,因为当我搜索文件的每一行寻找A时,也会返回CNAME和SOA。以下是我的代码:
有没有一种方法可以做到这一点?
// Looking for:
$search_a = 'A';
// Read from file
$lines = file("$domain.");
// Check if the line contains A
foreach($lines as $a) {
if(strpos($a, $search_a) !== false) {
$a_array = "$a";
$a_record_output = preg_split('/(.'.$domain.'.|\s)/', $a_array, -1, PREG_SPLIT_NO_EMPTY);
print_r($a_record_output);
}
}
这会返回:
Array
(
[0] => domain.io.
[1] => SOA
[2] => ns1.domain.io.
[3] => stuff.
[4] => (64719
[5] => 14400
[6] => 7200
[7] => 2419200
[8] => 3600)
)
Array
(
[0] => domain.io.
[1] => A
[2] => 8.8.8.8
)
Array
(
[0] => autodiscover
[1] => CNAME
[2] => autodiscover.outlook.com.
)
显然它正在工作,但是我需要排除SOA和CNAME记录,因为我只搜索A记录。
我需要完全忽略CNAME和SOA数组,并且只返回包含A的记录。这里是来自区域文件的摘录:
domain.io. A 8.8.8.8
www CNAME domain.io
有没有一种方法可以做到这一点?