Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从字符串中获取具有子域的域_Php_Function_Dns_Preg Match_Subdomain - Fatal编程技术网

PHP从字符串中获取具有子域的域

PHP从字符串中获取具有子域的域,php,function,dns,preg-match,subdomain,Php,Function,Dns,Preg Match,Subdomain,Im使用以下函数从字符串中剪切域: 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

Im使用以下函数从字符串中剪切域:

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;
}
函数获取域($url)
{
$pieces=parse_url($url);
$domain=isset($pieces['host'])?$pieces['host']:'';
if(preg_match('/(?P[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i',$domain,$regs)){
返回$regs['domain'];
}
返回false;
}
我需要剪切子域+域我应该如何更改
preg_match
以获得它


PS我正在搜索解决方案,但每个人都希望只剪切域而不剪切子域。

如果您无法计算regexp,一种更为程序化的方法可能是:

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

…如果你总是想要第一个域名(也就是说,它不适用于像“somedomain.com”这样的根域。

对不起,我找到了解决方案,请不要禁止,然后你可以自由回答你的问题,甚至将答案标记为已接受。这是绝对合法的。这很有趣,但我发现的解决方案是不正确的,因为它不符合
www.
那么问题仍然是实际的。我没有完全得到你想要的,对我来说,
parse\u url
提供了域名。请给出一些示例输入字符串和所需结果。如果域名是somedomain.co.im会怎么样