2

私はこのMX出力を持っています$ip

10 ASPMX2.GOOGLEMAIL.COM. 10 ASPMX3.GOOGLEMAIL.COM. 1 ASPMX.L.GOOGLE.COM. 5 ALT1.ASPMX.L.GOOGLE.COM. 5 ALT2.ASPMX.L.GOOGLE.COM.

番号が優先度で、サブドメインがメールサーバーです。どうすれば次のように配列に保存できますか?

Array
(
    [0] => Array
        (
            [0] => 10
            [1] => ASPMX2.GOOGLEMAIL.COM.
        )
    [1] => Array
        (
            [0] => 10
            [1] => ASPMX3.GOOGLEMAIL.COM.
        )
...
)

難しい部分は、出力全体が何でもかまいません。つまり、メールサーバーのサブドメイン名とサーバーの数はランダムである可能性があります。上記は5つのメールサーバーですが、3つまたは1つのサーバーにすることができます(メールサーバーの優先順位番号と混同しないでください)。

私は考えてpreg_matchいますが、ランダムなサブドメイン名は私を無知にします。何か案が?

4

1 に答える 1

2
$arr = array();

preg_match_all('/(\d+) ([\w.\-]+)/', $ip, $matches);
for($i = 0; $i < count($matches[1]); $i++)
{
    $arr[] = array($matches[1][$i], $matches[2][$i]);
}
配列
((
    [0]=>配列
        ((
            [0] => 10
            [1]=>ASPMX2.GOOGLEMAIL.COM。
        )。

    [1]=>配列
        ((
            [0] => 10
            [1]=>ASPMX3.GOOGLEMAIL.COM。
        )。

    [2]=>配列
        ((
            [0] => 1
            [1]=>ASPMX.L.GOOGLE.COM。
        )。

    [3]=>配列
        ((
            [0] => 5
            [1]=>ALT1.ASPMX.L.GOOGLE.COM。
        )。

    [4]=>配列
        ((
            [0] => 5
            [1]=>ALT2.ASPMX.L.GOOGLE.COM。
        )。

)。
于 2012-02-05T19:31:25.793 に答える