在处理网络数据时,经常需要从完整的URL中提取根域名。传统的方法是通过匹配域名后缀,但这种方法不仅繁琐,而且难以跟上不断更新的后缀列表。本文将介绍一种使用PHP正则表达式来精确提取根域名的方法,它简单、高效,且适用于大多数情况。
PHP函数详解
/** * 提取URL中的根域名 * @param string $url 需要处理的完整URL地址 * @param bool $tld 是否包含顶级域名后缀 * @return string|false 根域名或false */ function getBaseDomainByUrl($url, $tld = false) { $pieces = parse_url($url); $domain = isset($pieces['host']) ? $pieces['host'] : ''; if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $m)) { return ($tld === true) ? substr($m['domain'],($pos = strpos($m['domain'], '.')) !== false ? $pos + 1 : 0) : $m['domain']; } return false; }
正则表达式解析
[a-z0-9][a-z0-9\-]{1,63}:匹配域名的开头字符,可以是字母或数字,后面跟着1到63个字母、数字或短横线。文章来源:https://www.toymoban.com/article/740.html
\.[a-z\.]{2,6}:匹配域名的后缀,包括点号和2到6个字母或点号的组合,代表顶级域名。文章来源地址https://www.toymoban.com/article/740.html
实用示例
// 示例1:提取带www的域名 echo getBaseDomainByUrl('https://www.toymoban.com'); // 输出:toymoban.com // 示例2:提取无www的域名 echo getBaseDomainByUrl('https://toymoban.com'); // 输出:toymoban.com // 示例3:提取带顶级域名后缀 echo getBaseDomainByUrl('https://www.toymoban.com.cn', true); // 输出:toymoban.com.cn
到此这篇关于高效PHP脚本:精确提取URL中的根域名的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!