2015-05-29 8 views
5

Come posso tornare solo il TLD di un nome di dominioSplit PHP stringa di un URL

per esempio, se ho avuto la seguente:

www.domain.co.uk voglio tornare solo il .co.uk

e lo stesso per domain.co.uk

e lo stesso per tutti gli altri TLDs(.com, .co, .org etc)

c'è un modo semplice per fare questo in PHP senza utilizzare Regex

Stavo pensando di utilizzare explode ma im non troppo familiarità con quel

+0

check php parse_url –

+1

non sarà di aiuto. @MangeshSatheIND – Viral

+0

parse_url ti darà il nome del dominio e poi eseguirà un'espressione regolare su di esso, puoi ottenere .com /.co.uk, ecc. –

risposta

2

È possibile utilizzare una libreria chiamata tldextract.php.

Trova qui https://github.com/data-ac-uk/equipment/blob/master/_misc/tldextract.php

uso è molto semplice:

$extract = new TLDExtract(); 
$components = $extract('http://forums.bbc.co.uk/'); 
echo $components['tld']; // co.uk 

Ora, come semplice era quella?

Se si legge il codice, è possibile vedere che utilizza un grande list di tlds nella funzione fetchTldList().

+0

Mentre questa risposta (in background) sta usando regex, la risorsa fornita (publicsuffix.org) è incredibilmente utile! +1 – ohaal

+0

Grazie a @ohaal :) –

0

Questa funzione è valida per i nomi di dominio www e non-www. Non funziona per i sottodomini. Per risultati migliori è necessario utilizzare una regex o una libreria.

$domain = "www.domain.co.uk"; 
    function tld($domain) 
    { 
     if (strstr('www', $domain)) { 
      $part = 3; 
     } else { 
      $part = 2; 
     } 
     $expld = explode('.', $domain); 
     if (count($expld) > $part) { 
      return $expld[count($expld) - 2] . '.' . $expld[count($expld) - 1]; 
     } else { 
      return $expld[count($expld) - 1]; 
     } 
    } 
1
$returnHostName = parse_url($url, PHP_URL_HOST) //it will retrun 'domain' in your case 
$returnArrayType = explode($returnHostName, $returnHostName); //explode it from string 'domain' 

Ok ora la variabile returnArrayType contengono l'output desiderato, ma in forma di matrice che si può ottenere da chiamarlo di indice.

controllare se Funzionerà.

1

Non regex, non parse_url() non ti aiuterà.

È necessaria la libreria che estrae TLD utilizzando Public Suffix List, si consiglia di utilizzare TLDExtract.