2013-03-14 5 views
0

URL에 하위 도메인이있는 경우 사전 정의 된 메서드가 PHP에 있습니까?하위 도메인 가져 오기

URL 패턴이 될 수있다 :

SD 서브 doamin을 의미
http://www.sd.domain.com 
http://domain.com 
http://sd.domain.com 
http://domain.com 

. > 반환

경우 2 SD - - 1가

경우>거짓 또는

반환 :

이제 방법은 모든 경우에 대해 다른 값을 반환해야

케이스 3 ->거짓 또는

내가 찾은 좋은 링크

PHP function to get the subdomain of a URL

Get subdomain from url?

에게 반환 ->

경우 4 SD 반환

내 사례에는 특별히 적용되지 않습니다.

도움이 될 것입니다.

감사

답변

0

좋아, 내가 만든 스크립트 : 그래서

$url = $_SERVER['HTTP_HOST']; 
$host = explode('.', $url); 
if(!empty($host[0]) && $host[0] != 'www' && $host[0] != 'localhost'){ 
    $domain = $host[0]; 
}else{ 
    $domain = 'home'; 
} 
0

, 몇 가지 가능성이 있습니다 ... 물론

첫째, 정규 표현식 :

(http://)?(www\.)?([^\.]*?)\.?([^\.]+)\.([^\.]+) 

세 번째 괄호 안의 항목이 내 하위 도메인이됩니다. 물론, 귀하의 URL이 https : // 또는 www2 (모두 본적이 ...)이면 정규식이 깨질 수 있습니다. 그래서 이것은 작업을 시작하는 초안 일뿐입니다.

두 번째 아이디어는 귀하의 URL과 마찬가지로 explode입니다. 나는 이런 식의 생각 :이 기능을 뒤에

function getSubdomain($url) { 
    $parts = explode('.', str_replace('http://', '', $url)); 
    if(count($parts) >= 3) { 
     return $parts[count($parts) - 3]; 
    } 
    return null; 
} 

내 생각은 URL이 .에 의해 분할 할 경우 하위 도메인은 거의 항상 결과 배열에서 세 번째로 마지막 항목이 될 것이라고했다. 프로토콜을 먼저 제거해야합니다 (사례 3 참조). 물론, 이것은 확실히 더 우아하게 할 수 있습니다.

몇 가지 아이디어를 줄 수 있기를 바랍니다.

0

시도해보십시오.

[업데이트] www.mysite.com과 같이 _SITE_ADDRESS를 (를) 상수로 정의 했으므로 리터럴을 사용할 수 있습니다.

Google 시스템에서는 정확한 목적으로 작동하는 것으로 잘 작동합니다.

public static function getSubDomain() 
{ 
    if($_SERVER["SERVER_NAME"] == str_ireplace('http://','',_SITE_ADDRESS)) return ''; //base domain 
    $host = str_ireplace(array("www.", _SITE_ADDRESS), "", strtolower(trim($_SERVER["HTTP_HOST"]))); 
    $sub = preg_replace('/\..*/', '', $host); 
    if($sub == $host) return ''; //this is likely an ip address 
    return $sub; 
} 

이 기반으로 코드의 어떤 원래 개발자에게 미안 그 기능을하지만 링크 외부 노트가있다.

관련 문제