Как я могу получить Domain.ext из URL?PHP Prase - PullRequest
1 голос
/ 08 марта 2011

если у нас есть

 $url = "http://subdomain.domin.ext/somepath/file.php";

как получить domain.ext

когда я использовал

 $parse = parse_url($url);
 $domin = $parse[host];

, то echo "$domain"; //this returns subdomain.domin.ext

Есть ли идея получить domain.ext?

Ответы [ 3 ]

1 голос
/ 08 марта 2011
$url = "http://subdomain.domin.ext/somepath/file.php";
$parse = parse_url($url);
$domain = $parse['host'];
$lastDot = strrpos($domain,'.');
$ext = substr($domain,$lastDot+1);

Это даст вам "ext" (например, "com" или "gov"). В случае чего-то вроде amazon.co.uk, это даст вам «великобританию». Если вам нужен «co.uk», вам нужно будет добавить логику для обнаружения определенных TLD (например, «uk») и перейти ко второй точке в этих случаях.

0 голосов
/ 28 ноября 2014

Если у вас есть определенный домен с разными TLD, например, mysite с .co.uk и .com, то вы можете сделать следующее:

$url = 'http://mysite.co.uk/some-dir/';
$domain_pos = strpos($url, 'mysite');
$domain = substr($url, $domain_pos);
$ext_pos = strpos($domain, '/');
if($ext_pos !== false) { // extra check for paths/sub-dirs
  $domain = substr($domain, 0, $ext_pos); 
}
echo $domain;

Возвращает mysite.co.uk или любой другой домен верхнего уровня, который назначен на $url.

Обратите внимание на дополнительную проверку путей и подкаталогов. :)

0 голосов
/ 08 марта 2011
<?php
$url = "http://subdomain.domain.ext/somepath/file.php";
$parse = parse_url($url);
$domain = substr(strrchr($parse['host'], '.'), 1);
$domain = substr(strrchr(substr($parse['host'], 0, -strlen($domain)), '.'), 1). '.'. $domain;
if(in_array(strstr($domain, '.', true), array('co', 'com', 'net', 'org', 'edu', 'gov', 'mil')))
{
  $domain = substr(strrchr(substr($parse['host'], 0, -strlen($domain)), '.'), 1). '.'. $domain;
}
?>
...