2016-08-24 6 views
0

PHP経由で.tldをURLから取得するには、簡単な方法が必要です。 など。 www.domain.com/site、PHPは投稿する必要があります:tldは:.comです。 私はあなたが私を助けることができることを願っています。それはいいだろうその前にURLからPHP経由で.tldを取得

$url = 'http://www.example.com/site'; 
echo end(explode(".", parse_url($url, PHP_URL_HOST))); // echos "com" 

:URLのホスト部分を取得する

おかげ

答えて

5

使用parse_url()機能は、.で爆発すると、以下の配列

例の最後の要素を取得します$ urlがfilter_varの実際のURLかどうかを確認する例:

EDIT:

$url = 'http://' . $_SERVER['SERVER_NAME']; 
echo end(explode(".", parse_url($url, PHP_URL_HOST))); 
// echos "com" 
+0

ありがとうございますが、これを試してみると、$ url = $ _SERVER ['SERVER_NAME']; $ tld = end(explode( "。"、parse_url($ url、PHP_URL_HOST)));私は出力を得ることはありません。 – fr3d

+1

$ urlには何が含まれていますか?プロトコルなしのURLの場合は、$ url = 'http://'を試してください。 $ _SERVER ['SERVER_NAME']; – Robert

+1

試してみませんでしたが、これは実際には二重充足で動作するようには見えません。たとえば、.com.au、.co.ck(はい、これが存在します) –

6

文字列www.domain.com/siteから抽出ホストを抽出する場合は、parse_url()の使用が適しています。

ドメインやその部分を抽出する場合は、Public Suffix Listを使用してパッケージする必要があります。はい、文字列関数arround parse_url()を使用できますが、2つのレベルのTLDで不正な結果が生成されます。

$extract = new LayerShifter\TLDExtract\Extract(); 

# For 'http://www.domain.com/site' 

$url = 'http://www.domain.com/site'; 

parse_url($url, PHP_URL_HOST); // will return www.domain.com 
end(explode(".", parse_url($url, PHP_URL_HOST))); // will return com 

$result = $extract->parse($url); 
$result->getFullHost(); // will return 'www.domain.com' 
$result->getRegistrableDomain(); // will return 'domain.com' 
$result->getSuffix(); // will return 'com' 

# For 'http://www.domain.co.uk/site' 

$url = 'http://www.domain.co.uk/site'; 

parse_url($url, PHP_URL_HOST); // will return 'www.domain.co.uk' 
end(explode(".", parse_url($url, PHP_URL_HOST))); // will return uk, not co.uk 

$result = $extract->parse($url); 
$result->getFullHost(); // will return 'www.domain.co.uk' 
$result->getRegistrableDomain(); // will return 'domain.co.uk' 
$result->getSuffix(); // will return 'co.uk' 
+2

これはドットの数に関係なく、任意の接尾辞で機能するので正解です。 –

2

受け入れ答えは、例えば.co.ukでは動作しません:

私は、ドメイン解析用TLDExtractをお勧めし、ここで差分を表示するサンプルコードです。あなたのURLにすべて同じサブドメインまたはサブドメインがない場合は、このようなことができます。

$urls = array(
    'http://domain.com/site/blah/', 
    'http://www.domain.com/site/blah/', 
    'http://www.domain.audio/site?hithere=1', 
    'http://www.domain.co.uk/site?somehing=%2babc', 
); 
$subdomain = 'www.'; 
foreach($urls as $url){ 
    $host = parse_url($url, PHP_URL_HOST); 
    $host = str_ireplace($subdomain,'',$host); 
    $tld = strstr($host, '.'); 
    echo "$tld | "; 
} 

OUTPUT: .com | .com | .audio | | |

関連する問題