Получить запись MX с самым низким приоритетом из PHP

Мне нужно получить записи 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, которая есть в домене.

Если бы кто-нибудь мог указать мне правильное направление, это было бы здорово!

Ваше здоровье!

У вас должен быть $result['pri'] для сортировки. Или воспользуйтесь функцией getmxrr.

ceejayoz 26.09.2018 18:25

На самом деле я просто не знаю, как использовать его, чтобы получить то, что мне нужно.

Pete Wall 26.09.2018 18:42

@ceejayoz хороший звонок по getmxrr(), я никогда не слышал об этом.

miken32 27.09.2018 01:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
154
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте функцию 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";
}

Это идеально! Спасибо!!

Pete Wall 26.09.2018 18:46

Другие вопросы по теме