我只需要从 url 中获取域名,(没有 com 和其他所有内容)示例:
我有:
http://www.subdomain.domain1.com/
www.subdomain.domain2.net
subdomain.subdomain2.domain3.org/
http://domain4.com
我想使用 PHP:
domain1
domain2
domain3
domain4
基于Shyam 的回答并采用Mark Baker建议的概念来获取命名空间的倒数第二个元素,我可能会建议使用更简单的正则表达式,该表达式利用如下所示的锚定前瞻:
function get_domain($url) {
$matches = [];
preg_match('/[\w-]+(?=(?:\.\w{2,6}){1,2}(?:\/|$))/', $url, $matches);
return $matches[0];
}
火柴
names
在https://www.names.co.uk/
domain1
在http://www.subdomain.domain1.com/
domain2
在www.subdomain.domain2.net
domain3
在subdomain.subdomain2.domain3.org/
domain4
在http://domain4.com
seventymm
在http://www.seventymm.co.in/browse/buy-home-furnishing-bed-sheets-pack-of-3/2456/1/v2034/0/0/1/2/1/0/go
夏姆的回答是最好的。您只需确保所有 URL 都以 HTTP 开头并在末尾添加 strtok(见下文)。这是另一个使用数组的版本:
function get_domain($url)
{
$urlobj = parse_url($url);
$domain = $urlobj['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;
}
$urls = array(
'http://www.subdomain.domain1.com/',
'http://www.subdomain.domain2.net',
'http://subdomain.subdomain2.domain3.org/',
'http://domain4.com'
);
// Using foreach + strtok to remove .[domain extensions]
echo "<ul>";
foreach($urls as $url)
{
echo "<li>" . strtok(get_domain($url),'.') . "</li>";
}
echo "</ul>";
这将输出:
function get_domain($url)
{
$urlobj = parse_url($url);
$domain = $urlobj['host'];
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs))
{
return strtok($regs['domain'], '.');
}
return false;
}
然后:
$urls = array(
'http://www.subdomain.domain1.com/',
'http://www.subdomain.domain2.net',
'http://subdomain.subdomain2.domain3.org/',
'http://domain4.com'
);
// Using foreach
echo "<ul>";
foreach($urls as $url)
{
echo "<li>" . get_domain($url) . "</li>";
}
echo "</ul>";
减去 ul/li:
$urls = array(
'http://www.subdomain.domain1.com/',
'http://www.subdomain.domain2.net',
'http://subdomain.subdomain2.domain3.org/',
'http://domain4.com'
);
// Using foreach
foreach($urls as $url)
{
echo get_domain($url)."<br>";
}
输出:
域1
域2
域3 域
4
要获取域,您可以使用$_SERVER["SERVER_NAME"]
.
用您不想包含的子域分解字符串。
例如。subdomain.domain.com
<?php
$add=explode('subdomain.',$_SERVER["SERVER_NAME"])[1];
// $add = domain.com
?>