उच्च-स्तरीय डोमेन और द्वितीय-स्तरीय डोमेन 2 वर्णों का हो सकता है, लेकिन एक पंजीकृत उप डोमेन कम से कम 3 अक्षरों का होना चाहिए।
संपादित करें: पीजेवी की टिप्पणी के कारण, मैंने सीखा है कि ऑस्ट्रेलियाई डोमेन नाम अपवाद हैं क्योंकि वे 5 टीएलडी को एसएलडी (कॉम, नेट, ऑर्ग, एएसएन, आईडी) उदाहरण के रूप में अनुमति देते हैं: somedomain.com.au। मुझे लगता है कि com.au राष्ट्रीय स्तर पर नियंत्रित डोमेन नाम है जो "शेयर" है। इसलिए, तकनीकी रूप से, "com.au" अभी भी "बेस डोमेन" होगा, लेकिन यह उपयोगी नहीं है।
संपादित करें: 47,952 संभव तीन-अक्षर डोमेन नाम हैं (पैटर्न: [ए-जेए-जेड 0-9] [ए-जेए-जेड 0 9 -9]] [ए-जेए-जेड 0 9/9] या 36 * 37 * 36) सिर्फ 8 सबसे आम TLD के के साथ संयुक्त (कॉम, org, आदि) हम 383,616 संभावना है - यहां तक कि TLD के के संपूर्ण दायरे में जोड़े बिना। 1-अक्षर और 2-अक्षर डोमेन नाम अभी भी मौजूद हैं, लेकिन आगे जाने योग्य मान्य नहीं हैं।
google.com में
- "गूगल" "com" का उप डोमेन है
google.co.uk में
- "गूगल" "सह", का उप जो बारी में का उप डोमेन है है "यूके", या दूसरा स्तर का डोमेन वास्तव में, चूंकि "सह" एक वैध शीर्ष-स्तरीय डोमेन भी है
www.google.com में - "www" "google" का सबडोमेन है जो सबडोमेन है "com" की
"co.uk" एक मान्य मेजबान क्योंकि ऐसा कोई मान्य डोमेन नाम
कि assumpt के साथ जा रहा है आयन यह कार्य "यूआरएल मानचित्र" की आवश्यकता के बिना, लगभग सभी मामलों में उचित "आधारित" वापस कर देगा।
यदि आप दुर्लभ मामलों में से एक होते हैं, तो शायद आप इसे विशेष आवश्यकताओं को पूरा करने के लिए संशोधित कर सकते हैं ...
संपादित करें: आपको डोमेन स्ट्रिंग को इसके प्रोटोकॉल (http: //, ftp: //, आदि) के साथ यूआरएल के रूप में पास करना होगा या parse_url()
इसे वैध यूआरएल नहीं मानेंगे (जब तक कि आप व्यवहार करने के लिए कोड को संशोधित नहीं करना चाहते अलग ढंग से)
function basedomain($str = '')
{
// $str must be passed WITH protocol. ex: http://domain.com
$url = @parse_url($str);
if (empty($url['host'])) return;
$parts = explode('.', $url['host']);
$slice = (strlen(reset(array_slice($parts, -2, 1))) == 2) && (count($parts) > 2) ? 3 : 2;
return implode('.', array_slice($parts, (0 - $slice), $slice));
}
अगर आप सही उपयोग fopen
या curl
इस URL खोलने के लिए होने की जरूरत: http://data.iana.org/TLD/tlds-alpha-by-domain.txt
तो एक सरणी में लाइनों को पढ़ने और उपयोग करने वाले डोमेन भागों की तुलना करने के
,210
संपादित करें: ऑस्ट्रेलियाई डोमेन के लिए अनुमति देने के लिए:
function au_basedomain($str = '')
{
// $str must be passed WITH protocol. ex: http://domain.com
$url = @parse_url($str);
if (empty($url['host'])) return;
$parts = explode('.', $url['host']);
$slice = (strlen(reset(array_slice($parts, -2, 1))) == 2) && (count($parts) > 2) ? 3 : 2;
if (preg_match('/\.(com|net|asn|org|id)\.au$/i', $url['host'])) $slice = 3;
return implode('.', array_slice($parts, (0 - $slice), $slice));
}
महत्वपूर्ण अतिरिक्त नोट्स: मैं डोमेन मान्य करने के लिए इस सुविधा का उपयोग नहीं करते। यह सामान्य कोड है जो मैं केवल विभिन्न आंतरिक स्क्रिप्ट के भीतर उपयोग के लिए वैश्विक $_SERVER['SERVER_NAME']
से चल रहे सर्वर के लिए बेस डोमेन निकालने के लिए उपयोग करता हूं। ध्यान में रखते हुए मैंने कभी अमेरिका के भीतर साइटों पर काम किया है, मैंने कभी ऑस्ट्रेलियाई रूपों का सामना नहीं किया है जो पीजेवी ने पूछा था। यह आंतरिक उपयोग के लिए आसान है, लेकिन यह एक पूर्ण डोमेन सत्यापन प्रक्रिया से एक लंबा रास्ता है। यदि आप इसे इस तरह से उपयोग करने का प्रयास कर रहे हैं, तो मैं अमान्य डोमेन से मेल खाने के लिए बहुत अधिक संभावनाओं के कारण नहीं अनुशंसा करता हूं।
यह मुश्किल है की तरह स्ट्रिंग में परिणाम मिलेगा। 'Google.com' के लिए, आप टीएलडी और दूसरे स्तर के डोमेन नाम में रूचि रखते हैं। 'Google.co.uk' के लिए, आप टीएलडी और दूसरे और तीसरे स्तर के डोमेन नाम चाहते हैं। कोई परिभाषित "आधार नाम" नहीं है, जिसका अर्थ है "आधार नाम" से अलग-अलग रजिस्ट्रार/टीएलडी के लिए अलग है। – deceze
मुझे पूरा यकीन है कि आपको थोड़ा लंबा हवाला देना होगा, जो आप पूछ रहे हैं वह आपके केक खा रहा है और इसे भी ले रहा है। टीएलडी की सूची के बिना co.uk और google.com के बीच अंतर करने का कोई तरीका नहीं है, वे मेजबान नाम दोनों हैं। –
मुझे लगता है कि आप सही हैं, ऐसा लगता है कि कुछ भी कोड के बिना काम नहीं करेगा – Rohan