如果我执行以下操作:
preg_match('/[a-z]+.[a-z]+$', $_SERVER['HTTP_HOST'], $domain);
$SERVER['HTTP_HOST'] = subdomain.mydomain.com
,
preg_match()
会创建一个包含所有匹配项的数组$domain
,在这种情况下:$domain = ["mydomain.com"]
我想要的结果是$domain = "mydomain.com"
我的问题是,有没有更优雅的方式来做到这一点:
preg_match('/[a-z]+.[a-z]+$', $_SERVER['HTTP_HOST'], $domain);
$domain = $domain[0];
答案 0 :(得分:1)
我不知道它是否更优雅,但它更直接:
$arr = [
'subdomain.mydomain.com',
'mydomain.com',
'subdo.subdomain.mydomain.com'
];
foreach ($arr as $item) {
echo preg_replace('~(?:.*\.)?(?=.*\.)~', '', $item), PHP_EOL;
}