পিএইচপি ফাংশন একটি URL এর সাবডোমেন পেতে


107

সাবডোমেনের নাম পাওয়ার জন্য কি পিএইচপি তে কোনও ফাংশন আছে?

নিম্নলিখিত উদাহরণে আমি URL এর "এন" অংশ পেতে চাই:

en.example.com

6
আপনার কোনও ভেরিয়েবলের স্ট্রিং হিসাবে কোনও ইউআরএল আছে বা এই URL টি কোথা থেকে আসছে? প্রসঙ্গটি কী? সম্প্রসারিত করুন.
ফেলিক্স ক্লিং

আপনি কি এমন একটি রেইজেক্স ব্যবহার করতে পারবেন না যা এই জাতীয় কিছু (^|://)(.*)\.এবং ক্যাপচার করেছিল .*? আমি বরং পিএইচপি এবং রেজেক্স উভয়ই স্তন্যপান করি তবে এটি মনে আসে।
কর্সিকা

এটি কি পেতে হবে en.foo.bar.example.comবা en.example.co.uk?
vlvaro González

parse_url এছাড়াও সহায়তা করতে পারে
স্বপ্নিল

উত্তর:


132

এখানে একটি লাইন সমাধান:

array_shift((explode('.', $_SERVER['HTTP_HOST'])));

বা আপনার উদাহরণ ব্যবহার:

array_shift((explode('.', 'en.example.com')));

সম্পাদনা: ডাবল প্রথম বন্ধনী যুক্ত করে স্থির "কেবলমাত্র পরিবর্তনশীলগুলি রেফারেন্স দ্বারা পাস করা উচিত"।


সম্পাদনা 2 : পিএইচপি 5.4 থেকে শুরু করে আপনি সহজভাবে এটি করতে পারেন:

explode('.', 'en.example.com')[0];

17
কেবল পরিবর্তনগুলি রেফারেন্স দ্বারা পাস করা উচিত should
ট্যামস পাপ

8
আপনি কি explode(...)[0]এই দিনগুলিতে শিফট ব্যবহারের পরিবর্তে কেবল করতে সক্ষম নন ? বেশ কয়েক বছর ধরে পিএইচপিং হচ্ছে না ..
টোর

ত্রুটি:Strict Standards: Only variables should be passed by reference.
জাস্টিন

1
নিশ্চিতভাবেই আপনি (বিস্ফোরণ (...)) [0] যদিও ফাংশন প্যারান্থেসিসের পরিবর্তে (5.4 এর পূর্বে) রিটার্ন অ্যারেতে কাজ করা উচিত
গারেট ক্লাওরন

3
এই সমাধানটি কারও ক্ষেত্রে টাইপ করে কাজ করবে না www.en.example.comএবং এভাবে wwwসাবডোমেন হিসাবে ফিরে আসবে ।
ললবাস

65

Parse_url ফাংশন ব্যবহার করে ।

$url = 'http://en.example.com';

$parsedUrl = parse_url($url);

$host = explode('.', $parsedUrl['host']);

$subdomain = $host[0];
echo $subdomain;

একাধিক সাবডোমেনের জন্য

$url = 'http://usa.en.example.com';

$parsedUrl = parse_url($url);

$host = explode('.', $parsedUrl['host']);

$subdomains = array_slice($host, 0, count($host) - 2 );
print_r($subdomains);

@ মাইক লুইস - এটি কি একাধিক সাবডোমেনগুলির সমস্যা সমাধান করে, যেমন: usa.en.example.com? শুধু ভাবছি (আমার নিজের উত্তর দেয় না, বিটিডাব্লু)।
জারেড ফারিশ

@ জ্যারেড, একাধিক সাবডোমেন সনাক্ত করার জন্য একটি সমাধান যুক্ত করেছেন।
মাইক লুইস

1
@ মাইক - এটি কি tx.usa.en.example.com নিয়ে কাজ করবে? (বা বিজ্ঞান.নিউজ.বিবিসি.কম )? (বিটিডব্লিউ, এটি একটি কাজের লিঙ্ক নয়, কেবল একটি উদাহরণ, যদিও নিউজ.বিবিসিএইচ.উইক কাজ করে)
জারেড ফারিশ

4
এটি নেট, কম, বিজ ইত্যাদির মতো একটি একক 'শব্দ' টিএলডি রয়েছে এমন সব কিছুর জন্য কাজ করে তবে কো.উকের সাথে কাজ করার সময়, উদাহরণস্বরূপ, এটি হয় না। এখানে যেমন দেখা গেছে এটি সমাধান করা আসলে একটি কঠিন সমস্যা।
মাইক লুইস

2
কোনও সাবডোমেন না থাকলে এটিও ব্যর্থ হয়।
রাভেরেন

32

আপনি প্রথমে ডোমেন নাম (যেমন sub.example.com => example.co.uk) পেয়ে এটি করতে পারেন এবং তারপরে সাবডোমেনগুলি পেতে স্ট্রাস্টার ব্যবহার করুন।

$testArray = array(
    'sub1.sub2.example.co.uk',
    'sub1.example.com',
    'example.com',
    'sub1.sub2.sub3.example.co.uk',
    'sub1.sub2.sub3.example.com',
    'sub1.sub2.example.com'
);

foreach($testArray as $k => $v)
{
    echo $k." => ".extract_subdomains($v)."\n";
}

function extract_domain($domain)
{
    if(preg_match("/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches))
    {
        return $matches['domain'];
    } else {
        return $domain;
    }
}

function extract_subdomains($domain)
{
    $subdomains = $domain;
    $domain = extract_domain($subdomains);

    $subdomains = rtrim(strstr($subdomains, $domain, true), '.');

    return $subdomains;
}

আউটপুট:

0 => sub1.sub2
1 => sub1
2 =>
3 => sub1.sub2.sub3
4 => sub1.sub2.sub3
5 => sub1.sub2

2
এটি সর্বোত্তম সমাধান বলে মনে হচ্ছে কারণ এটি কোনও সাবডোমেন ছাড়াই ডোমেনগুলিকে অনুমতি দেয়, ডোমেন নামটি পুনরায় চালিত করার পরিবর্তে সাবটমেনটি প্রথম বিন্দুর আগে অংশ হিসাবে রয়েছে। সাবডোমেনের অস্তিত্ব পরীক্ষা করার জন্য খুব দরকারী।
কার্ল এমডাব্লু

আমার "বেস" ডোমেনটি (সাবডোমেন ছাড়াই) পাওয়ার দরকার ছিল এবং আমি হোস্টটি বিস্ফোরিত করে এবং forলুপের সাথে অ্যারের শেষ উপাদানগুলি পেয়ে নিজের সমাধান তৈরি করেছিলাম , তবে তাদের দৈর্ঘ্য পরীক্ষা করতে হয়েছিল (তারা সনাক্ত করতে কিনা "co.uk" এর মতো ডোমেনের অংশ ছিল)। আসলে, আপনার সমাধানটি আমি যা করছিলাম তার থেকে অনেক বেশি সহজ। রেগেক্স জীবন বাঁচায়, ধন্যবাদ!
Yoone

1
দুর্দান্ত ... এটি সমস্ত ডোমেন প্রকার এবং সাবডোমেনগুলির জন্য এত ভাল কাজ করে .. দুর্দান্ত।
জন

2
যখন এই সমাধান খুব ঝরঝরে এবং কাজ করতে পারে প্রায় সব ক্ষেত্রেই সচেতন ডোমেইনের নাম চেয়ে বেশি 6 অক্ষর, মত থাকতে পারে যে হতে pvt.k12.ma.us, health.vnবা এমনকি k12.ak.us। এছাড়াও, ডোমেনগুলির নামগুলি চীনা বা রাশিয়ান বর্ণচিহ্ন সেট ব্যবহার করা যেতে পারে যাতে রেজেক্স অংশটি [a-z\.]{2,6}তাদের সাথে মেলে না। ডোমেনের উদাহরণ উদাহরণ হিসাবে এখানে দেখুন: publicsuffix.org/list
পোমেহ

12

http://php.net/parse_url

<?php
  $url = 'http://user:password@sub.hostname.tld/path?argument=value#anchor';
  $array=parse_url($url);
  $array['host']=explode('.', $array['host']);

  echo $array['host'][0]; // returns 'en'
?>

7

যেহেতু ডোমেন প্রত্যয়গুলির একমাত্র নির্ভরযোগ্য উত্স হ'ল ডোমেন নিবন্ধকগণ, আপনি তাদের অজানা ছাড়া সাবডোমেনটি খুঁজে পাবেন না। Https://publicsuffix.org এ সকল ডোমেন প্রত্যয় সহ একটি তালিকা রয়েছে । এই সাইটটি একটি পিএইচপি লাইব্রেরিতে লিঙ্ক করেছে: https://github.com/jeremykendall/php-domain-parser

নীচে একটি উদাহরণ সন্ধান করুন। আমি en.test.co.uk এর নমুনাটিও যুক্ত করেছি যা বহু প্রত্যয় (co.uk) সহ একটি ডোমেন।

<?php

require_once 'vendor/autoload.php';

$pslManager = new Pdp\PublicSuffixListManager();
$parser = new Pdp\Parser($pslManager->getList());
$host = 'http://en.example.com';
$url = $parser->parseUrl($host);

echo $url->host->subdomain;


$host = 'http://en.test.co.uk';
$url = $parser->parseUrl($host);

echo $url->host->subdomain;

5

সবচেয়ে সহজ এবং দ্রুত সমাধান।

$sSubDomain = str_replace('.example.com','',$_SERVER['HTTP_HOST']);

4

কেবল...

    preg_match('/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/i', $url, $match);

শুধু পড়ুন $ ম্যাচ [1]

কাজের উদাহরণ

এটি ইউআরএলগুলির তালিকার সাথে পুরোপুরি কাজ করে

$url = array(
    'http://www.domain.com', // www
    'http://domain.com', // --nothing--
    'https://domain.com', // --nothing--
    'www.domain.com', // www
    'domain.com', // --nothing--
    'www.domain.com/some/path', // www
    'http://sub.domain.com/domain.com', // sub
    'опубликованному.значения.ua', // опубликованному ;)
    'значения.ua', // --nothing--
    'http://sub-domain.domain.net/domain.net', // sub-domain
    'sub-domain.third-Level_DomaIN.domain.uk.co/domain.net' // sub-domain
);

foreach ($url as $u) {
    preg_match('/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/i', $u, $match);
    var_dump($match);
}

2
পিএস - রাশিয়ান লেখায় এটি কী লেখা আছে সে সম্পর্কে আমার কোনও ধারণা নেই। শুধু থেকে কিছু নৈমিত্তিক শব্দ গ্রহণ ru.wikipedia.org );
Kamafeather

এটা কি ইউক্রেনীয় নয়? .uaইউক্রেনের জন্য দেশের কোড।
স্পষ্টভাবে

নাঃ। শুধু মিশ্র তথ্য। তবে আমি নিশ্চিত নই, আমি তাদের পার্থক্য করার পক্ষে যথেষ্ট ভাল নই;)
কামাফেদার

3
রাশিয়ানদের প্রতি, গুগল থেকে রাশিয়ান থেকে ইংরেজী অনুবাদ করা "প্রকাশিত মান" হিসাবে ফিরে আসে (যদি কেউ আমার মতো কৌতূহলী ছিল)
জেরেমি হ্যারিস

@ কামাফাদার এটি বুলেটপ্রুফ দেখায়। শুধু $match[1]অংশ পেতে কোনও উপায় ? $match[0]অপ্রয়োজনীয় মনে হচ্ছে
অ্যান্ড্রেস এসকে

3
$REFERRER = $_SERVER['HTTP_REFERER']; // Or other method to get a URL for decomposition

$domain = substr($REFERRER, strpos($REFERRER, '://')+3);
$domain = substr($domain, 0, strpos($domain, '/'));
// This line will return 'en' of 'en.example.com'
$subdomain = substr($domain, 0, strpos($domain, '.')); 

1
বর্তমান হোস্টটি স্বয়ংক্রিয়ভাবে সনাক্ত করার আরও ভাল উপায় রয়েছে (যেমন $_SERVER['HTTP_HOST']) তারপরে একটি স্পোফ-সক্ষম রেফারারের শিরোনামের উপর নির্ভর করে, ধরে নিই যে উত্তরের পিছনে সাধারণ ধারণাটি কি তা।
ম্যাথু

ঠিক আছে, আমি কোডের একটি পুরানো অংশ ব্যবহার করছিলাম। উদাহরণ এখনও দাঁড়িয়ে আছে। এটাই প্রশ্নের মূল নয়।
জারেড ফারিশ

কেবলমাত্র উপরের এই মন্তব্যগুলিকে যুক্ত করার জন্য, $ _SERVER ['HTTP_HOST'] এর উপর নির্ভর করা ফলপ্রসূ নাও হতে পারে, কারণ এটি সেট নাও হওয়ার সম্ভাবনা রয়েছে।
gmslzr

2

পিএইচপি 7.0: বিস্ফোরণ ফাংশন ব্যবহার করে এবং সমস্ত ফলাফলের একটি তালিকা তৈরি করুন।

list($subdomain,$host) = explode('.', $_SERVER["SERVER_NAME"]);

উদাহরণ: sub.domain.com

echo $subdomain; 

ফলাফল: সাব

echo $host;

ফলাফল: ডোমেন


আপনি টিএলডির মতো ভুলে গেছেন .co.uk- আপনার স্নিপেট এই টিএলডিগুলির সাথে কাজ করবে না
অ্যাড্রিয়ান প্রিয়াস

1

আমি সবচেয়ে ভাল এবং সংক্ষিপ্ত সমাধানটি খুঁজে পেয়েছি তা হ'ল

array_shift(explode(".",$_SERVER['HTTP_HOST']));

কঠোর ত্রুটি ঘটবে। বিস্ফোরণের আউটপুট সরাসরি অ্যারে_শিফ্টে যেতে পারে না।
ইয়াহাক

1

যারা 'ত্রুটি: কঠোর স্ট্যান্ডার্ডস পান তাদের জন্য: কেবলমাত্র ভেরিয়েবলগুলি রেফারেন্স দ্বারা পাস করা উচিত।' এর মতো ব্যবহার করুন:

$env = (explode(".",$_SERVER['HTTP_HOST'])); $env = array_shift($env);


এটি প্রশ্ন ছিল না, তবে আপনার ইনপুটটির জন্য ধন্যবাদ।
ফাজম


1

সত্যিই কোনও 100% গতিশীল সমাধান নেই - আমি ঠিক এটি চেষ্টা করার চেষ্টা করেছি এবং বিভিন্ন ডোমেন এক্সটেনশনের কারণে (ডিটিএল) এই কাজটি আসলে এই সমস্ত এক্সটেনশানগুলি পার্স করা এবং প্রতিবার এটি পরীক্ষা না করেই সত্যই কঠিন হবে:

.com vs .co.uk vs org.uk

সবচেয়ে নির্ভরযোগ্য বিকল্পটি হ'ল একটি ধ্রুবক (বা ডাটাবেস এন্ট্রি ইত্যাদি) সংজ্ঞায়িত করা যা প্রকৃত ডোমেন নাম সংরক্ষণ করে এবং এটি $_SERVER['SERVER_NAME']ব্যবহার থেকে সরিয়ে দেয়substr()

defined("DOMAIN")
    || define("DOMAIN", 'mymaindomain.co.uk');



function getSubDomain() {

    if (empty($_SERVER['SERVER_NAME'])) {

        return null;

    }

    $subDomain = substr($_SERVER['SERVER_NAME'], 0, -(strlen(DOMAIN)));

    if (empty($subDomain)) {

        return null;

    }

    return rtrim($subDomain, '.');

}

এখন আপনি যদি http://test.mymaindomain.co.ukএটির অধীনে এই ফাংশনটি ব্যবহার করছেন তবে তা আপনাকে দেবে testবা আপনার যদি একাধিক সাব-ডোমেন স্তর http://another.test.mymaindomain.co.ukপাবেন another.testতবে অবশ্যই আপনি আপডেটটি না করেন DOMAIN

আশা করি এটা কাজে লাগবে.



1

রেজেক্স, স্ট্রিং ফাংশন, পার্স_আরল () বা তাদের সংমিশ্রণগুলি ব্যবহার করা এটি আসল সমাধান নয়। কেবলমাত্র ডোমেনের সাথে প্রস্তাবিত সমাধানগুলির কোনওটি পরীক্ষা করুন test.en.example.co.uk, কোনও সঠিক ফলাফল হবে না।

সঠিক সমাধান হ'ল ব্যবহারের প্যাকেজ যা জনগণের প্রত্যয় তালিকার সাথে ডোমেনকে পার্স করে । আমি টিএলডেক্সট্র্যাক্ট পুনরুদ্ধার করি , এখানে নমুনা কোডটি রয়েছে:

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

$result = $extract->parse('test.en.example.co.uk');
$result->getSubdomain(); // will return (string) 'test.en'
$result->getSubdomains(); // will return (array) ['test', 'en']
$result->getHostname(); // will return (string) 'example'
$result->getSuffix(); // will return (string) 'co.uk'

1

এটি আমার সমাধান, এটি সর্বাধিক সাধারণ ডোমেনগুলির সাথে কাজ করে, আপনি যেমন প্রয়োজন তেমন এক্সটেনশনের অ্যারে ফিট করতে পারেন:

$SubDomain = explode('.', explode('|ext|', str_replace(array('.com', '.net', '.org'), '|ext|',$_SERVER['HTTP_HOST']))[0]);

0
// For www.abc.en.example.com 
$host_Array = explode(".",$_SERVER['HTTP_HOST']); // Get HOST as array www, abc, en, example, com
array_pop($host_Array); array_pop($host_Array);   // Remove com and exmaple
array_shift($host_Array);                         // Remove www (Optional)
echo implode($host_Array, ".");                   // Combine array abc.en

0

আমি জানি আমি খেলায় সত্যিই দেরি করেছি, কিন্তু এখানেই চলে।

আমি যা করেছি তা হ'ল HTTP_HOST সার্ভার ভেরিয়েবল ( $_SERVER['HTTP_HOST']) এবং ডোমেনে অক্ষরের সংখ্যা (যাতে example.comএটি 11 হবে)।

তারপরে আমি substrসাবডোমেনটি পেতে ফাংশনটি ব্যবহার করেছি । আমি করেছিলাম

$numberOfLettersInSubdomain = strlen($_SERVER['HTTP_HOST'])-12
$subdomain = substr($_SERVER['HTTP_HOST'], $numberOfLettersInSubdomain);

আমি সাবস্ট্রিংগুলি 11 এর পরিবর্তে 12 এ কেটেছি কারণ দ্বিতীয় প্যারামিটারের জন্য সাবস্ট্রিংগুলি 1 থেকে শুরু হয়। সুতরাং এখন আপনি যদি test.example.com প্রবেশ করান তবে এর মান $subdomainহবে test

এটি ব্যবহার করার চেয়ে ভাল explodeকারণ যদি সাবডোমেনের .মধ্যে এটি থাকে তবে এটি এটি কেটে দেবে না।


শুরুর অবস্থান "0" আপনার উত্তরে অনুপস্থিত ছিল। $ সাবডোমেন = সাবস্ট্রিট ($ _ সার্ভার ['HTTP_HOST'], 0, $ সংখ্যাঅফলেটারআইএনএসবডোমাইন);
জেমি

0

আপনি যদি ড্রুপাল 7 ব্যবহার করেন

এটি আপনাকে সাহায্য করবে:

global $base_path;
global $base_root;  
$fulldomain = parse_url($base_root);    
$splitdomain = explode(".", $fulldomain['host']);
$subdomain = $splitdomain[0];

0
$host = $_SERVER['HTTP_HOST'];
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
$domain = $matches[0];
$url = explode($domain, $host);
$subdomain = str_replace('.', '', $url[0]);

echo 'subdomain: '.$subdomain.'<br />';
echo 'domain: '.$domain.'<br />';

0

পিএইচপি 5.3 থেকে আপনি স্ট্রাস্টার () সত্য প্যারামিটার সহ ব্যবহার করতে পারেন

echo strstr($_SERVER["HTTP_HOST"], '.', true); //prints en

wwwস্ট্রিং প্রারম্ভের শুরু না থাকলে এটি কেবলমাত্র কাজ করবে । খানিকটা তুচ্ছ পন্থা।
FooBar

এটি দলের অন্যান্য বিকাশকারীদের জন্য জিনিসগুলি সহজতর করে, আমি এটি কিছু উন্নত রেগ এক্সপ্রেসের চেয়ে বরং ব্যবহার করব। আপনি যদি www কে ছাঁটাই করতে চান তবে ট্রিম (, গুলি, 'www') ব্যবহার করুন; বা কেবল এটি আপনার ব্যবসায়িক যুক্তিতে সামঞ্জস্য করুন ...
তাসমানিস্কি

1
সম্পূর্ণতার অনুরোধে জন্য, www হয় আসলে একটি সাবডোমেন। এটি কেবলমাত্র historicalতিহাসিক কারণে ডোমেন নামের সাথে সাধারণত যুক্ত হয় i
লেভি মরিসন

0

এটা চেষ্টা কর...

$domain = 'en.example.com';
$tmp = explode('.', $domain);
$subdomain = current($tmp);
echo($subdomain);     // echo "en"

আমি মনে করি এটি ওপি এবং আরও দর্শনার্থীদের জন্য আরও সহায়ক হবে, যখন আপনি নিজের অন্তরঙ্গকরণের জন্য কিছু ব্যাখ্যা যোগ করেন।
রিপোর্টার

0
function get_subdomain($url=""){
    if($url==""){
        $url = $_SERVER['HTTP_HOST'];
    }
    $parsedUrl = parse_url($url);
    $host = explode('.', $parsedUrl['path']);
    $subdomains = array_slice($host, 0, count($host) - 2 );
    return implode(".", $subdomains);
}

1
লাইন # 7 হওয়া উচিত$host = explode('.', isset($parsedUrl['path']) ? $parsedUrl['path'] : $parsedUrl['host']);
কাল

0

আপনি এটি ব্যবহার করতে পারেন

echo substr($_SERVER['HTTP_HOST'], 0, strrpos($_SERVER['HTTP_HOST'], '.', -5));

0

আমি এরকম কিছু করছি

$url = https://en.example.com

$splitedBySlash = explode('/', $url);
$splitedByDot = explode('.', $splitedBySlash[2]);

$subdomain = $splitedByDot[0];

0

আমরা একাধিক সাবডোমেন এবং একাধিক tld এছাড়াও আইপি এবং লোকালহোস্ট পরিচালনা করতে এই ফাংশনটি ব্যবহার করি

function analyse_host($_host)
    {
        $my_host   = explode('.', $_host);
        $my_result = ['subdomain' => null, 'root' => null, 'tld' => null];

        // if host is ip, only set as root
        if(filter_var($_host, FILTER_VALIDATE_IP))
        {
            // something like 127.0.0.5
            $my_result['root'] = $_host;
        }
        elseif(count($my_host) === 1)
        {
            // something like localhost
            $my_result['root'] = $_host;
        }
        elseif(count($my_host) === 2)
        {
            // like jibres.com
            $my_result['root'] = $my_host[0];
            $my_result['tld']  = $my_host[1];
        }
        elseif(count($my_host) >= 3)
        {
            // some conditons like
            // ermile.ac.ir
            // ermile.jibres.com
            // ermile.jibres.ac.ir
            // a.ermile.jibres.ac.ir

            // get last one as tld
            $my_result['tld']  = end($my_host);
            array_pop($my_host);

            // check last one after remove is probably tld or not
            $known_tld    = ['com', 'org', 'net', 'gov', 'co', 'ac', 'id', 'sch', 'biz'];
            $probably_tld = end($my_host);
            if(in_array($probably_tld, $known_tld))
            {
                $my_result['tld'] = $probably_tld. '.'. $my_result['tld'];
                array_pop($my_host);
            }

            $my_result['root'] = end($my_host);
            array_pop($my_host);

            // all remain is subdomain
            if(count($my_host) > 0)
            {
                $my_result['subdomain'] = implode('.', $my_host);
            }
        }

        return $my_result;
    }

0

ধরুন বর্তমান url = sub.example.com ample

    $ হোস্ট = অ্যারে_ রিভার্স (বিস্ফোরিত ('।', $ _SERVER ['SERVER_NAME']));

    যদি (গণনা ($ হোস্ট)> = 3)
       প্রতিধ্বনি "প্রধান ডোমেন হল ="। $ হোস্ট [1]। "।"। $ হোস্ট [0]। "& সাবডোমেনটি =" $ হোস্ট [2];
       // প্রধান ডোমেন হল = উদাহরণ.com এবং সাবডোমেন = = সাব
    } অন্য {
       প্রতিধ্বনি "প্রধান ডোমেন হল ="। $ হোস্ট [1]। "।"। $ হোস্ট [0]। "& সাবডোমেন খুঁজে পাওয়া যায় নি";
       // "প্রধান ডোমেন হল = উদাহরণ.com এবং সাবডোমেন পাওয়া যায় নি";
    }


-3

যদি আপনি কেবল প্রথম সময়ের আগে যা আসে তা চান:

list($sub) = explode('.', 'en.example.com', 2);

শুরুতে যদি কোনও প্রোটোকল হ্যান্ডলার থাকে যেমন http: //, https: //, ftp: //, ইত্যাদি ...? ;)
জারেড ফারিশ

@ জ্যারেড, তিনি যে পার্সিংটি পার্স করতে চাইছেন তাতে কোনও প্রোটোকল নেই ... তবে যদি সেখানে থাকত তবে আমি parse_url()হোস্টটি বের করতে ব্যবহার করতাম ।
ম্যাথু

সুতরাং আমরা দুটি পন্থা সরবরাহ করেছি যা বিভিন্ন প্রসঙ্গে উপযুক্ত হবে।
জারেড ফারিশ

প্রধানত, আমি খুব খুশি যে কেউ একটি রেজেক্স উত্তর পোস্ট করেনি (এখনও)। আমার উত্তরের শেষ লাইনটি উল্লেখ না করা আপনার একই কাজটি সম্পাদন করে।
জারেড ফারিশ

এবং হোস্টনামটি যদি en.example.co.uk হয়?
মার্ক বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.