PHP从字符串获取带子域的域

时间:2014-05-21 06:14:25

标签: php function dns preg-match subdomain

我使用以下函数从字符串中删除域:

function get_domain($url)
{
  $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, $regs)) {
    return $regs['domain'];
  }
  return false;
}

我需要削减子域+域我应该如何更改preg_match才能获得它?

PS 我正在搜索解决方案但是每个人都希望只删除没有子网的域名。

1 个答案:

答案 0 :(得分:1)

如果你无法解决正则表达式问题,那么可能采用更加程序化的方法:

$pieces = parse_url($url);
$aDomains = explode('.', $pieces['host']);
$sub = array_shift($aDomains);
$restofdomain = implode($aDomains);

...如果您总是只想要第一个域名(即它不会使用根域,例如&some; somedomain.com&#39;。