Мне нужно получить записи MX из домена, но только из домена с наивысшим приоритетом (наименьшее число).
Я много играл, но не мог понять, как вернуть только один результат.
$results = dns_get_record($domain, DNS_MX);
foreach ($results as $result)
{
$A = dns_get_record($result['target'], DNS_A);
foreach ($A as $ip)
{
echo $ip['ip'];
}
}
Это дает мне то, что я хочу получить, но для каждой записи MX, которая есть в домене.
Если бы кто-нибудь мог указать мне правильное направление, это было бы здорово!
Ваше здоровье!
На самом деле я просто не знаю, как использовать его, чтобы получить то, что мне нужно.
@ceejayoz хороший звонок по getmxrr(), я никогда не слышал об этом.






Используйте функцию array_column(), чтобы собрать все приоритеты, а затем используйте array_filter, чтобы извлечь самые маленькие:
// get all the results
$results = dns_get_record($domain, DNS_MX);
// find the lowest value in the "pri" column
$target_pri = min(array_column($results, "pri"));
$highest_pri = array_filter(
$results,
// keep anything that matches the lowest (could be more than one)
function($item) use($target_pri) {return $item["pri"] === $target_pri;}
);
// now loop through each of them, finding all their IP addresses
foreach ($highest_pri as $mx) {
echo "$mx[target]: ";
$results = dns_get_record($mx["target"], DNS_A);
foreach ($results as $a) {
echo "$a[ip] ";
}
echo "\n";
}
Это идеально! Спасибо!!
У вас должен быть
$result['pri']для сортировки. Или воспользуйтесь функциейgetmxrr.