You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP从MX记录中查询所有对应的PTR反向解析记录

PHP查询MX对应IP的PTR记录方案

dns_get_record()查询PTR的核心规则

PTR是反向DNS记录,不能直接将IP地址作为参数传入dns_get_record()查询,需要先将IPv4地址按段倒序,拼接.in-addr.arpa后缀生成专用的查询域名,才能返回正确结果。

完整可运行代码

<?php
$mx_records = array();
getmxrr("google.com",$mx_records,$mx_weight);
for($i = 0; $i < count($mx_records);$i++)
{
     $mxs[$mx_records[$i]] = $mx_weight[$i];
}
asort($mxs);
$records = array_keys($mxs);
for($i = 0; $i < count($records); $i++)
{
    $ip = gethostbyname($records[$i]);
    echo "MX主机:".$records[$i]." 对应IP:".$ip."\n";
    // 构造PTR查询域名
    $ip_segments = explode('.', $ip);
    $reversed_segments = array_reverse($ip_segments);
    $ptr_query = implode('.', $reversed_segments) . '.in-addr.arpa';
    // 查询PTR记录
    $ptr_result = dns_get_record($ptr_query, DNS_PTR);
    if (!empty($ptr_result)) {
        echo "对应PTR记录:".$ptr_result[0]['target']."\n";
    } else {
        echo "该IP未配置PTR记录\n";
    }
    echo "---\n";
}
?>

字段说明

dns_get_record($ptr_query, DNS_PTR)的返回值是二维数组:

  • 查询成功且存在PTR记录时,数组第一个元素的target字段即为PTR解析值
  • 无对应PTR记录或查询失败时,返回空数组
  • 第二个参数DNS_PTR是PHP内置常量,指定本次DNS查询的类型为PTR记录

内容的提问来源于stack exchange,提问作者Rscalover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:54:03