2017-05-28 6 views
0

Ich möchte nur Domain-Namen aus einer gegebenen URL für jede Art von TLDs extrahieren. TLD kann eine beliebige Anzahl an Zeichen oder zwei in der Größe meinerDomain-Name von URL in Php

<?php $domain_name = 'http://www.subdomain.domain.co.in' ; 
     $ParsedURL = parse_url($domain_name); 
     $domain_name = preg_replace("/^([a-zA-Z0-9].*\.)?([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z.]{2,})$/", '$2', $ParsedURL['host']); 
     $domain_name = current(explode('.', $domain_name)); 
     print_r($domain_name); 

so obige Lösung wird nur begrenzt URLs erfüllt, es schlägt fehl, wenn TDL drei oder mehr sind in Zeichen zB org.in, Auch ich bin immer anders Ergebnisse, wenn in der URL keine Subdomäne vorhanden ist. Bitte helfen Sie mir, da ich nur "Domain" von Given URL

+0

Denke nicht, dass es einen einfachen Weg gibt, dies ohne einige Konstanten zu tun. Zum Beispiel, ist der Domain-Name immer mit dem http: // www darauf? Wird es immer eine Subdomain geben? Wird es jemals ein https geben? Das ist ein lustiges Problem, aber ich denke nicht, dass es eine einfache Lösung geben wird. – Joe

+0

Was ist das genaue Ziel, den Domain-Namen durch $ 2 zu ersetzen? – G4Hu

Antwort

0

Versuchen Sie diese Regex /^\.{1}.*\.[a-zA-Z0-9]{2,3}(\.[a-zA-Z0-9]{2,3})?$/ die einzige Sache wäre, die erste "." aus der übereinstimmenden Zeichenfolge: <?php substr($domain_name, 1);?>

+0

Danke, es funktioniert gut in allen TLD aber schlägt fehl, wenn es Subdomain in URL –

+0

kleine Bearbeitung könnte funktionieren – G4Hu

+0

Sorry, funktionierte nicht im Falle von Subdomain –