php 获取域名后缀的方法

2024-04-14 316 0

方法1:不带点

要获取域名后缀(例如 ".com", ".net", ".org" 等),你可以使用 PHP 的字符串处理函数来提取 URL 的最后一部分。下面是一个简单的函数,用于从完整的 URL 或域名中提取后缀:

function getDomainSuffix($domain) {
    // 使用 explode 函数分割域名,以点号(.)为分隔符
    $parts = explode('.', $domain);
    
    // 检查数组是否有足够的部分(至少应该有两部分,例如 "example.com")
    if (count($parts) > 1) {
        // 返回最后一部分,即域名后缀
        return $parts[count($parts) - 1];
    }
    
    // 如果没有找到后缀,返回 null 或空字符串
    return null;
}

// 使用示例
$domain = "www.example.com";
$suffix = getDomainSuffix($domain);
echo "Domain suffix: " . $suffix; // 输出: Domain suffix: com

这个函数假设传入的 $domain 变量是一个有效的域名或 URL,并且至少包含一个点号(.)。它会将域名分割成多个部分,并返回最后一部分作为域名后缀。

请注意,这个函数不检查域名后缀是否真实存在或有效。例如,如果传入 "www.example.com.invalid",它仍然会返回 "invalid" 作为域名后缀,即使 ".invalid" 不是一个有效的顶级域名(TLD)。

如果你需要更精确地处理域名和验证其有效性,你可能需要使用专门的库或工具,如 PHP 的 idna_convert() 函数(用于处理国际化域名)或第三方库,如 public_suffix_list,它可以根据公共后缀列表来识别有效的域名后缀。

 

方法2:带点

要获取域名后缀,包括点号(.),您可以使用 PHP 的字符串处理函数来从完整的 URL 或域名中提取。这里是一个修改后的函数,它会返回域名后缀,包括点号:

function getDomainSuffixWithDot($domain) {
    // 使用 explode 函数分割域名,以点号(.)为分隔符
    $parts = explode('.', $domain);
    
    // 从最后一部分开始向前遍历,直到找到第一个非数字字符的部分
    for ($i = count($parts) - 1; $i >= 0; $i--) {
        if (!ctype_digit($parts[$i])) {
            // 返回该部分,并添加点号
            return '.' . $parts[$i];
        }
    }
    
    // 如果没有找到非数字后缀,返回 null 或空字符串
    return '';
}

// 使用示例
$domain = "www.example.com";
$suffix = getDomainSuffixWithDot($domain);
echo "Domain suffix with dot: " . $suffix; // 输出: Domain suffix with dot: .com

这个函数会找到域名的最后一个非数字部分,并返回它,包括点号。这通常是顶级域名(TLD)或二级域名(SLD),例如 .com.net.co.uk 等。

请注意,这个函数假设域名格式是有效的,并且没有检查是否存在非法字符或域名结构的有效性。此外,这个函数不处理国际化域名(IDN)的情况,这可能需要额外的库或函数来处理。

如果您需要处理公共后缀列表(Public Suffix List),您可能需要使用像 public_suffix_list 这样的第三方库来更准确地确定域名的后缀。这个列表会考虑像 .co.uk 这样的二级域名后缀,而不仅仅是像 .com 这样的顶级域名后缀。

    相关文章

    PHP常用时间日期处理总结
    使用PHP获取文件夹中所有文件
    thinkphp8中,数据库的字段是 api_node_id ,值是:多个用英文逗号区分,这种应如何来查询准确的数据取出唯一的主键ID?
    tp(thinkphp6)记录后台操作日志
    ThinkPHP6实现上传图片带水印方法
    ThinkPHP6实现简单的记录网站后台管理操作日志方法

    发布评论