用于获取 URL 子域的 PHP 函数

2022-08-30 07:13:29

PHP中是否有函数来获取子域的名称?

在下面的示例中,我想获取URL的“en”部分:

en.example.com

答案 1

这是一个单行解决方案:

array_shift((explode('.', $_SERVER['HTTP_HOST'])));

或者使用您的示例:

array_shift((explode('.', 'en.example.com')));

编辑:通过添加双括号修复了“只有变量应该通过引用传递”的问题。


编辑2:从PHP 5.4开始,您可以简单地执行以下操作:

explode('.', 'en.example.com')[0];

答案 2

使用parse_url函数。

$url = 'http://en.example.com';

$parsedUrl = parse_url($url);

$host = explode('.', $parsedUrl['host']);

$subdomain = $host[0];
echo $subdomain;

对于多个子域

$url = 'http://usa.en.example.com';

$parsedUrl = parse_url($url);

$host = explode('.', $parsedUrl['host']);

$subdomains = array_slice($host, 0, count($host) - 2 );
print_r($subdomains);

推荐