我只需要将域名仅形成一个网址,(没有com和其他所有内容)示例:
我有:
http://www.subdomain.domain1.com/
www.subdomain.domain2.net
subdomain.subdomain2.domain3.org/
http://domain4.com
我想要使用PHP:
domain1
domain2
domain3
domain4
答案 0 :(得分:9)
答案 1 :(得分:2)
以Shyam's answer为基础,并采用Mark Baker提出的概念来获取名称空间的倒数第二个元素,我建议使用一个更简单的正则表达式,该表达式利用锚定的超前如下所示:
{{define "index"}}
{{range .Items.result}}
{{.Title}}
{{end}}
{{end}}
匹配
ExecuteTemplate
中的{li> function get_domain($url) {
$matches = [];
preg_match('/[\w-]+(?=(?:\.\w{2,6}){1,2}(?:\/|$))/', $url, $matches);
return $matches[0];
}
names
中的{li> https://www.names.co.uk/
domain1
中的{li> http://www.subdomain.domain1.com/
domain2
中的{li> www.subdomain.domain2.net
domain3
中的{li> subdomain.subdomain2.domain3.org/
domain4
中的{li> http://domain4.com
答案 2 :(得分:0)
Shyam的答案是最好的。您只需要确保所有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>";
}
输出:
DOMAIN1
DOMAIN2
DOMAIN3
domain4
答案 3 :(得分:-5)
要获取域名,您可以使用$_SERVER["SERVER_NAME"]
。
使用您不想包含的子域爆炸字符串。
EG。 subdomain.domain.com
<?php
$add=explode('subdomain.',$_SERVER["SERVER_NAME"])[1];
// $add = domain.com
?>