域名需要单独作为实际域名和扩展名返回
http://www.something.com
应该返回:sld = something
,tld= com
something.co.uk
应该返回:sld = something
,tld= co.uk
我对正则表达式并不熟悉,所以我真的需要一些帮助来处理它。
我想我可以使用parse_url()
,然后查看host
,但那又是什么?
答案 0 :(得分:7)
只需使用PHP Explode Function,限制为2。
示例1:
var_dump(explode('.','example.com',2));
示例1结果:
array(2) { [0]=> string(7) "example" [1]=> string(3) "com" }
示例2:
var_dump(explode('.','example.uk.com',2));
示例2结果:
array(2) { [0]=> string(7) "example" [1]=> string(6) "uk.com" }
答案 1 :(得分:4)
正如您所说,您可以使用$urlCompontents=parseUrl($url)
来获取主机名。然后,您可以使用explode(".",$urlCompontents["host"])
将主机名拆分为不同的部分,例如。 array("example","co","uk")
。你必须通过比较列表中的部分来完成剩下的工作,因为没有固定的规则,例如e.G. “uk”本身不被视为顶级域名,但“co.uk”是。但是你不需要任何正则表达式。
答案 2 :(得分:2)
这是我使用的。希望它有所帮助。
function extractTLD( $domain )
{
$productTLD = '';
$tempstr = explode(".", $domain);
unset($tempstr[0]);
foreach($tempstr as $value){
$productTLD = $productTLD.".".$value;
}
return $productTLD;
}
答案 3 :(得分:2)
使用parse_url($url,PHP_URL_HOST)
获取主机名;然后使用下面的函数将域拆分为多个部分:
function split_domain($host,$SLDs='co|com|edu|gov|mil|net|org')
{
$parts=explode('.',$host);
$index=count($parts)-1;
if($index>0 && in_array($parts[$index-1],explode('|',$SLDs))) $index--;
if($index===0) $index++;
$subdomain=implode('.',array_slice($parts,0,$index-1));
$domain=$parts[$index-1];
$tld=implode('.',array_slice($parts,$index));
return array($subdomain,$domain,$tld);
}
答案 4 :(得分:0)
将字符串拆分为.
个字符(无需正则表达式),然后从最后处理生成的数组。
您需要手动保存哪些SLD直接销售给最终用户的索引,因为没有简单的模式可以准确描述它们。
请注意,可能会有influx of new TLDs。
答案 5 :(得分:0)
下面的代码将拆分(爆炸)'。'上的主机字符串。字符。需要一个简单的tld异常数组,我已将co.uk放入其中。只有这些例外,它才会使用主机名的最后两个块。
$h='something.co.uk';
$x=array('uk'=>'co'); // exceptions of tld's with 2 parts
$r=explode('.',$h); // split host on dot
$t=array_pop($r); // create tld
if(isset($x[$t]) and end($r)==$x[$t]) $t=array_pop($r).'.'.$t; // add to tld for the exceptions
$d=implode('.',$r); // domain
echo "sld:$d, tld:$t";
结果是sld:something,tld:co.uk
答案 6 :(得分:0)
$pos = strpos('domain.com', '.');
$length= strlen('domain.com');
$domain = substr('domain.com', 0, $pos);
$tld= substr('domain.com', $pos, $length);
答案 7 :(得分:0)
以防有人需要获取有效TLD的更新列表: http://data.iana.org/TLD/tlds-alpha-by-domain.txt