একটি URL থেকে ডোমেন বিশ্লেষণ


144

আমাকে এমন একটি ফাংশন তৈরি করতে হবে যা কোনও ইউআরএল থেকে ডোমেনকে পার্স করে।

সুতরাং, সাথে

http://google.com/dhasjkdas/sadsdds/sdda/sdads.html

অথবা

http://www.google.com/dhasjkdas/sadsdds/sdda/sdads.html

এটা ফিরে আসা উচিত google.com

সঙ্গে

http://google.co.uk/dhasjkdas/sadsdds/sdda/sdads.html

এটা ফিরে আসা উচিত google.co.uk



9
নিবন্ধন করুন পিএইচপি'র ডোমেন নয়, হোস্টকেparse_url() রিটার্ন দেয় ।
মিঃ হোয়েট

1
@ w3dk: এটি এখনও একটি চমত্কার সূচনা পয়েন্ট হতে পারে, এই প্রশ্নটিকে parse_url"আমি কী করতে পারি" এর চেয়ে অস্পষ্টতার চেয়ে এই সীমাবদ্ধতার বিষয়ে হতে দেয় ।
অরবিট

5
@ লাইটনেসেসেসিনআরবਿਟ আপনার সুনামের ভিত্তিতে আপনার প্রতিরক্ষা মজাদার নয় - আরও সহজভাবে আপনি স্বীকার করতে পারবেন যে আপনি প্রশ্নটি পুরোপুরি পড়েন নি
অ্যান্ডি জোনস

উত্তর:


297

চেক আউট parse_url():

$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html';
$parse = parse_url($url);
echo $parse['host']; // prints 'google.com'

parse_url সত্যিই খুব খারাপভাবে মঙ্গল করা ইউআরএলগুলি খুব ভালভাবে পরিচালনা করে না তবে আপনি যদি সাধারণত শালীন ইউআরএল আশা করেন তবে তা ঠিক।


35
Parse_url () একটি জিনিস না করে কেবলমাত্র ডোমেনটি ফিরিয়ে দেয়। আপনি যদি www.google.com বা www.google.co.uk যোগ করেন তবে এটি হোস্টটিকেও ফিরিয়ে দেবে। এর জন্য কোন পরামর্শ?
গ্যাভিন এম রায়


6
parse_urlসাবডোমেনগুলি পরিচালনা করবেন না, তবে পার্ল এটি করেছেন: github.com/jwage/purl
ড্যামিয়েন

1
parse_url()সম্ভবত ইউআরএলগুলি এমন কোনও ডোমেনের সাথে পার্স করবে যাতে ভুলভাবে ড্যাশ রয়েছে। সুনির্দিষ্ট প্রমাণ খুঁজে পাওয়া যায়নি, তবে এই বাগটি দেখুন । অভ্যন্তরীণভাবে FILTER_VALIDATE_URLব্যবহার parse_url()করে।
Xedin অজ্ঞাত

8
বা সহজভাবে: print parse_url($url, PHP_URL_HOST))যদি আপনার $parseঅন্য কোনও কিছুর জন্য অ্যারের প্রয়োজন না হয়।
rybo111

98
$domain = str_ireplace('www.', '', parse_url($url, PHP_URL_HOST));

এটি http://google.com/ ... এবং http://www.google.com/ ... google.comউভয়ের জন্যই ফিরিয়ে দেবে


18
'কারণ আপনি যদি "server.google.com" বা "www3.google.com" রাখেন তবে এটি এখনও সার্ভারটি ফিরিয়ে দেবে ...
প্যাট্রিক

সমস্ত সাবডোমেন নয় www, ক্রল-66-249-66-1.googlebot.com, myblog.blogspot.com এর কয়েকটি উদাহরণ examples
রাফার্ক

23

Http://us3.php.net/manual/en/function.parse-url.php থেকে# 93983

কিছু অদ্ভুত কারণে, যখন কোনও ইনপুট ইউআরএলে কোনও স্কিম সরবরাহ না করা হয় তখন পার্স_উরাল হোস্টটিকে (উদাঃ উদাহরণ.কম) পথ হিসাবে ফেরত দেয়। তাই আমি আসল হোস্ট পেতে একটি দ্রুত ফাংশন লিখেছি:

function getHost($Address) { 
   $parseUrl = parse_url(trim($Address)); 
   return trim($parseUrl['host'] ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); 
} 

getHost("example.com"); // Gives example.com 
getHost("http://example.com"); // Gives example.com 
getHost("www.example.com"); // Gives www.example.com 
getHost("http://example.com/xyz"); // Gives example.com 

আপনার স্ট্রিং এর মতো hostএবং উল্লেখ করতে ভুলবেন না path
গম্বো

1
যদি আমি উদাহরণ ডট কম ব্যবহার করি, পিএইচপি কোনও বিজ্ঞপ্তি প্রদর্শন করে: Message: Undefined index: hostএটি ঠিক করার জন্য কোনও ধারণা?
জিম

1
দুর্ভাগ্যক্রমে সাবডোমেনটি এখনও এই পদ্ধতির সাথে অন্তর্ভুক্ত রয়েছে, আপনার উদাহরণ # 3 দেখুন।
জেনাল্যাম্পটন

1
@ জিম 3 আর টার্নারিটির প্রথম অংশটি এতে পরিবর্তন করুন !empty($parseUrl['host'])
Demonslay335

LOL এর যদি কোনও স্কিম না থাকে তবে এটি কোনও URL নয়।
মিকেন 32

12

100% কাজ করার কোডটি আমার জন্য এটি কেটে গেছে বলে মনে হয় না, আমি উদাহরণটি কিছুটা প্যাচ করেছি তবে কোডটি পাওয়া গেছে যা সহায়তা করছে না এবং এতে সমস্যা নেই। সুতরাং আমি এটিকে কয়েকটি ফাংশনে বদলে দিয়েছি (মজিলার কাছ থেকে তালিকাটি সারাক্ষণ জিজ্ঞাসা করা এবং ক্যাশে সিস্টেম সরিয়ে ফেলার জন্য)। এটি 1000 টি ইউআরএল সেটগুলির বিরুদ্ধে পরীক্ষা করা হয়েছে এবং দেখে মনে হচ্ছে এটি কাজ করে।

function domain($url)
{
    global $subtlds;
    $slds = "";
    $url = strtolower($url);

    $host = parse_url('http://'.$url,PHP_URL_HOST);

    preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
    foreach($subtlds as $sub){
        if (preg_match('/\.'.preg_quote($sub).'$/', $host, $xyz)){
            preg_match("/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/", $host, $matches);
        }
    }

    return @$matches[0];
}

function get_tlds() {
    $address = 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';
    $content = file($address);
    foreach ($content as $num => $line) {
        $line = trim($line);
        if($line == '') continue;
        if(@substr($line[0], 0, 2) == '/') continue;
        $line = @preg_replace("/[^a-zA-Z0-9\.]/", '', $line);
        if($line == '') continue;  //$line = '.'.$line;
        if(@$line[0] == '.') $line = substr($line, 1);
        if(!strstr($line, '.')) continue;
        $subtlds[] = $line;
        //echo "{$num}: '{$line}'"; echo "<br>";
    }

    $subtlds = array_merge(array(
            'co.uk', 'me.uk', 'net.uk', 'org.uk', 'sch.uk', 'ac.uk', 
            'gov.uk', 'nhs.uk', 'police.uk', 'mod.uk', 'asn.au', 'com.au',
            'net.au', 'id.au', 'org.au', 'edu.au', 'gov.au', 'csiro.au'
        ), $subtlds);

    $subtlds = array_unique($subtlds);

    return $subtlds;    
}

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

$subtlds = get_tlds();
echo domain('www.example.com') //outputs: example.com
echo domain('www.example.uk.com') //outputs: example.uk.com
echo domain('www.example.fr') //outputs: example.fr

আমি জানি আমার এটিকে ক্লাসে পরিণত করা উচিত ছিল, তবে সময় ছিল না।


11
function get_domain($url = SITE_URL)
{
    preg_match("/[a-z0-9\-]{1,63}\.[a-z\.]{2,6}$/", parse_url($url, PHP_URL_HOST), $_domain_tld);
    return $_domain_tld[0];
}

get_domain('http://www.cdl.gr'); //cdl.gr
get_domain('http://cdl.gr'); //cdl.gr
get_domain('http://www2.cdl.gr'); //cdl.gr

আমাকে জন্য কাজ করুন: example.com // ভুল: খালি স্ট্রিং example.com // সঠিক: example.com www.example.com // ভুল: খালি স্ট্রিং example.com/xyz // সঠিক উদাহরণ: example.com
jenlampton

এটি একটি দুর্দান্ত উত্তর এবং আরও ক্রেডিটের দাবিদার। এই ফাংশনটিতে কেবল প্রথম লাইন হিসাবে এই লাইনটি যুক্ত করুন এবং এটি মঙ্গেশ্যাসেথ এবং জেনেল্যাম্পটনের সমস্যাগুলিও সমাধান করে: যদি (সাবস্ট্রি ($ url, 0, strlen ('http: //')) <> 'http: //' ) && (সাবস্ট্রাস্ট ($ url, 0, strlen ('https: //')) <> 'https: //')) $ url = 'http: //'.$url;
রিক

4

আপনি যদি স্ট্রিং থেকে হোস্টটি এক্সট্রাক্ট করতে চান তবে আপনার http://google.com/dhasjkdas/sadsdds/sdda/sdads.htmlজন্য পার্স_আর্লল () এর গ্রহণযোগ্য সমাধান।

তবে আপনি যদি ডোমেন বা এর অংশগুলি এক্সট্রাক্ট করতে চান তবে আপনার প্যাকেজটি দরকার যা সর্বজনীন প্রত্যয় তালিকা ব্যবহার করে । হ্যাঁ, আপনি পার্সে_আরল () এর আড়ালে স্ট্রিং ফাংশনগুলি ব্যবহার করতে পারেন তবে এটি কখনও কখনও ভুল ফলাফল প্রকাশ করবে।

আমি ডোমেন পার্সিংয়ের জন্য টিএলডেক্সট্র্যাক্ট পুনরুদ্ধার করছি, এখানে নমুনা কোড যা আলাদা দেখায়:

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

# For 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html'

$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html';

parse_url($url, PHP_URL_HOST); // will return google.com

$result = $extract->parse($url);
$result->getFullHost(); // will return 'google.com'
$result->getRegistrableDomain(); // will return 'google.com'
$result->getSuffix(); // will return 'com'

# For 'http://search.google.com/dhasjkdas/sadsdds/sdda/sdads.html'

$url = 'http://search.google.com/dhasjkdas/sadsdds/sdda/sdads.html';

parse_url($url, PHP_URL_HOST); // will return 'search.google.com'

$result = $extract->parse($url);
$result->getFullHost(); // will return 'search.google.com'
$result->getRegistrableDomain(); // will return 'google.com'

এই পরামর্শের জন্য আপনাকে অনেক ধন্যবাদ। একটি সহজ কাজ বলে মনে হচ্ছে তার জন্য আমি অন্য লাইব্রেরি যুক্ত করা ঘৃণা করি , কিন্তু তারপরে আমি তাদের রেডমে এই উক্তিটি আমার উপর প্রয়োগ করতে দেখেছি: "প্রত্যেকেই এই ভুল হয়। এবং শেষ 2 উপাদানগুলি গ্রহণ করা কেবলমাত্র যদি আপনি সাধারণ উদাহরণস্বরূপ .com ডোমেনগুলির কথা চিন্তা করেন তবে দীর্ঘ পথ যেতে পারে for 'ইউকে' টিএলডি হিসাবে যথাক্রমে 'বিবিসি' এবং 'কো.উক' এর পরিবর্তে। "
Demonslay335

আমাদের প্রিয় .co.uk ডোমেনগুলিতে আমরা কী ঘটতে চাইছি তা বিভক্ত করার জন্য ফলাফলগুলি আসলে সঠিক ফলাফল, ইউকে শীর্ষ স্তরের সাথে সহ দ্বিতীয় স্তরের হয়ে থাকে। ওয়েবমাস্টার প্রায়শই এটি উপলব্ধি করে না।
ক্রিস ২

4

আমি খুঁজে পেয়েছি যে @ ফিলফ্রেও এর সমাধান (পিএইচপিএন থেকে রেফারেন্স করা) খুব ভাল ফলাফল পাওয়া ভাল তবে কিছু ক্ষেত্রে এটি পিএইচপি'র "নোটিশ" এবং "কঠোর মানদণ্ড" বার্তা দেখায়। এখানে এই কোডের একটি নির্দিষ্ট সংস্করণ।

function getHost($url) { 
   $parseUrl = parse_url(trim($url)); 
   if(isset($parseUrl['host']))
   {
       $host = $parseUrl['host'];
   }
   else
   {
        $path = explode('/', $parseUrl['path']);
        $host = $path[0];
   }
   return trim($host); 
} 

echo getHost("http://example.com/anything.html");           // example.com
echo getHost("http://www.example.net/directory/post.php");  // www.example.net
echo getHost("https://example.co.uk");                      // example.co.uk
echo getHost("www.example.net");                            // example.net
echo getHost("subdomain.example.net/anything");             // subdomain.example.net
echo getHost("example.net");                                // example.net

2

আমি যে কোডটি তৈরি করেছি তা এখানে 100% কেবলমাত্র ডোমেন নামটি খুঁজে পায়, যেহেতু এটি অ্যাকাউন্টে মোজিলা সাব টিल्डস লাগে takes কেবলমাত্র আপনাকে যাচাই করতে হবে তা হল আপনি কীভাবে সেই ফাইলটির ক্যাশে তৈরি করেন, তাই আপনি প্রতিবার মোজিলাকে জিজ্ঞাসা করবেন না।

কিছু অদ্ভুত কারণে, co.uk এর মতো ডোমেনগুলি তালিকায় নেই, সুতরাং আপনাকে কিছু হ্যাকিং করতে হবে এবং সেগুলি ম্যানুয়ালি যুক্ত করতে হবে। এটি সবচেয়ে পরিষ্কার সমাধান নয় তবে আমি আশা করি এটি কাউকে সহায়তা করবে।

//=====================================================
static function domain($url)
{
    $slds = "";
    $url = strtolower($url);

            $address = 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';
    if(!$subtlds = @kohana::cache('subtlds', null, 60)) 
    {
        $content = file($address);
        foreach($content as $num => $line)
        {
            $line = trim($line);
            if($line == '') continue;
            if(@substr($line[0], 0, 2) == '/') continue;
            $line = @preg_replace("/[^a-zA-Z0-9\.]/", '', $line);
            if($line == '') continue;  //$line = '.'.$line;
            if(@$line[0] == '.') $line = substr($line, 1);
            if(!strstr($line, '.')) continue;
            $subtlds[] = $line;
            //echo "{$num}: '{$line}'"; echo "<br>";
        }
        $subtlds = array_merge(Array(
            'co.uk', 'me.uk', 'net.uk', 'org.uk', 'sch.uk', 'ac.uk', 
            'gov.uk', 'nhs.uk', 'police.uk', 'mod.uk', 'asn.au', 'com.au',
            'net.au', 'id.au', 'org.au', 'edu.au', 'gov.au', 'csiro.au',
            ),$subtlds);

        $subtlds = array_unique($subtlds);
        //echo var_dump($subtlds);
        @kohana::cache('subtlds', $subtlds);
    }


    preg_match('/^(http:[\/]{2,})?([^\/]+)/i', $url, $matches);
    //preg_match("/^(http:\/\/|https:\/\/|)[a-zA-Z-]([^\/]+)/i", $url, $matches);
    $host = @$matches[2];
    //echo var_dump($matches);

    preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
    foreach($subtlds as $sub) 
    {
        if (preg_match("/{$sub}$/", $host, $xyz))
        preg_match("/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/", $host, $matches);
    }

    return @$matches[0];
}

ডোমেনটি co.ukতালিকায় না থাকার কারণটি ছিল এটি টিএলডির একটি তালিকা, ডোমেনের নয়। এই উত্তরটি লেখা হওয়ার পর থেকে সিসিটিএলডি অনেক পরিবর্তন হয়েছে। উল্লেখযোগ্যভাবে: ".uk এর অধীনে সরাসরি নতুন রেজিস্ট্রেশনগুলি 10 জুন 2014 08:00 বিএসটি থেকে নোমনেট দ্বারা গ্রহণ করা হয়েছে, তবে বিদ্যমান গ্রাহকদের জন্য ইতিমধ্যে একটি .co.uk, .org.uk, .me.uk রয়েছে এমন একটি সংরক্ষণের সময়সীমা রয়েছে however , .net.uk, .ltd.uk বা .plc.uk ডোমেন সম্পর্কিত .uk ডোমেন দাবি করতে, যা 10 জুন 2019-এ 07:59 বিএসটি অবধি চলে । " ( উত্স )
ashleedawg

2

আপনি দ্বিতীয় প্যারামিটার হিসাবে পার্সে_আরএল ফাংশনে PHP_URL_HOST পাস করতে পারেন

$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html';
$host = parse_url($url, PHP_URL_HOST);
print $host; // prints 'google.com'

2
এটি মূলত উপরের উত্তরের মত একই, তবে, প্রশ্নটি ডোমেনের জন্য প্রয়োজনীয় , যা অগত্যা হোস্টের মতো নয়
মিঃ হোয়েট

স্কিম সম্পর্কে উপরের মন্তব্য দেখুন: কিছু স্বতন্ত্র কারণে, যখন ইনপুট ইউআরএলে কোনও স্কিম সরবরাহ না করা হয় তখন পার্স_উরাল হোস্টটিকে (উদাহরণস্বরূপ ডটকম) পথ হিসাবে ফেরত দেয়। তাই আমি আসল হোস্টটি পাওয়ার জন্য একটি দ্রুত ফাংশন লিখেছি:
জেনেল্যাম্পটন


2

নিম্নলিখিতগুলির সাথে গ্রহণযোগ্য সমাধানটিকে পুনরায় প্রতিস্থাপনের বিষয়টি বিবেচনা করুন:

parse_url () সর্বদা কোনও উপ-ডোমেন (গুলি) অন্তর্ভুক্ত করবে, সুতরাং এই ফাংশনটি ডোমেনের নামগুলি খুব ভাল পার্স করে না। এখানে কিছু উদাহরন:

$url = 'http://www.google.com/dhasjkdas/sadsdds/sdda/sdads.html';
$parse = parse_url($url);
echo $parse['host']; // prints 'www.google.com'

echo parse_url('https://subdomain.example.com/foo/bar', PHP_URL_HOST);
// Output: subdomain.example.com

echo parse_url('https://subdomain.example.co.uk/foo/bar', PHP_URL_HOST);
// Output: subdomain.example.co.uk

পরিবর্তে, আপনি এই ব্যবহারিক সমাধান বিবেচনা করতে পারেন। এটি অনেকগুলি কভার করবে তবে সমস্ত ডোমেনের নাম নয় - উদাহরণস্বরূপ, 'sos.state.oh.us' এর মতো নিম্ন স্তরের ডোমেনগুলি কভার করা হয়নি।

function getDomain($url) {
    $host = parse_url($url, PHP_URL_HOST);

    if(filter_var($host,FILTER_VALIDATE_IP)) {
        // IP address returned as domain
        return $host; //* or replace with null if you don't want an IP back
    }

    $domain_array = explode(".", str_replace('www.', '', $host));
    $count = count($domain_array);
    if( $count>=3 && strlen($domain_array[$count-2])==2 ) {
        // SLD (example.co.uk)
        return implode('.', array_splice($domain_array, $count-3,3));
    } else if( $count>=2 ) {
        // TLD (example.com)
        return implode('.', array_splice($domain_array, $count-2,2));
    }
}

// Your domains
    echo getDomain('http://google.com/dhasjkdas/sadsdds/sdda/sdads.html'); // google.com
    echo getDomain('http://www.google.com/dhasjkdas/sadsdds/sdda/sdads.html'); // google.com
    echo getDomain('http://google.co.uk/dhasjkdas/sadsdds/sdda/sdads.html'); // google.co.uk

// TLD
    echo getDomain('https://shop.example.com'); // example.com
    echo getDomain('https://foo.bar.example.com'); // example.com
    echo getDomain('https://www.example.com'); // example.com
    echo getDomain('https://example.com'); // example.com

// SLD
    echo getDomain('https://more.news.bbc.co.uk'); // bbc.co.uk
    echo getDomain('https://www.bbc.co.uk'); // bbc.co.uk
    echo getDomain('https://bbc.co.uk'); // bbc.co.uk

// IP
    echo getDomain('https://1.2.3.45');  // 1.2.3.45

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


হাই, এটি ভাল তবে এটি আইপি ঠিকানাগুলির সাথে কাজ করে না। তবুও, দুর্দান্ত কাজ।
মিসি

1

parse_url আমার পক্ষে কাজ করেনি। এটি কেবল পথ ফিরিয়েছে। Php5.3 + ব্যবহার করে বেসিকগুলিতে স্যুইচ করা:

$url  = str_replace('http://', '', strtolower( $s->website));
if (strpos($url, '/'))  $url = strstr($url, '/', true);

1

আমি আপনার জন্য সম্পাদনা করেছি:

function getHost($Address) { 
    $parseUrl = parse_url(trim($Address));
    $host = trim($parseUrl['host'] ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); 

    $parts = explode( '.', $host );
    $num_parts = count($parts);

    if ($parts[0] == "www") {
        for ($i=1; $i < $num_parts; $i++) { 
            $h .= $parts[$i] . '.';
        }
    }else {
        for ($i=0; $i < $num_parts; $i++) { 
            $h .= $parts[$i] . '.';
        }
    }
    return substr($h,0,-1);
}

সমস্ত প্রকারের url (www.domain.ltd, sub1.subn.domain.ltd এর ফলাফল হবে: ডোমেইন.এলটি।


1

আমি এই উত্তরটি দেরিতে যুক্ত করছি কারণ এটি সেই উত্তর যা গুগলে সর্বাধিক পপ আপ হয় ...

আপনি পিএইচপি ব্যবহার করতে পারেন ...

$url = "www.google.co.uk";
$host = parse_url($url, PHP_URL_HOST);
// $host == "www.google.co.uk"

হোস্টকে দখল করতে তবে হোস্টটি যে ব্যক্তিগত ডোমেনটি উল্লেখ করে তা নয়। (উদাহরণটি www.google.co.ukহোস্ট, তবে google.co.ukএটি ব্যক্তিগত ডোমেন)

বেসরকারী ডোমেনটি দখল করার জন্য, আপনাকে অবশ্যই সর্বজনীন প্রত্যয়গুলির তালিকা জানতে হবে যার মধ্যে কেউ একটি ব্যক্তিগত ডোমেন নিবন্ধন করতে পারে । এই তালিকাটি মোজিলার দ্বারা https://publicsuffix.org/ এ সঞ্চিত হওয়ার কথা happens

নিচের কোডটি যখন ইতিমধ্যে জনসাধারণের প্রত্যয় তৈরি করা হয়েছে তখন কাজ করে। সহজভাবে ফোন করুন

$domain = get_private_domain("www.google.co.uk");

বাকি কোড সহ ...

// find some way to parse the above list of public suffix
// then add them to a PHP array
$suffix = [... all valid public suffix ...];

function get_public_suffix($host) {
  $parts = split("\.", $host);
  while (count($parts) > 0) {
    if (is_public_suffix(join(".", $parts)))
      return join(".", $parts);

    array_shift($parts);
  }

  return false;
}

function is_public_suffix($host) {
  global $suffix;
  return isset($suffix[$host]);
}

function get_private_domain($host) {
  $public = get_public_suffix($host);
  $public_parts = split("\.", $public);
  $all_parts = split("\.", $host);

  $private = [];

  for ($x = 0; $x < count($public_parts); ++$x) 
    $private[] = array_pop($all_parts);

  if (count($all_parts) > 0)
    $private[] = array_pop($all_parts);

  return join(".", array_reverse($private));
}

আমার টেস্টিং অনুসারে, পার্স_আরলকে একটি সুগঠিত ইউআরএল দরকার। আপনি যদি কেবল 'www.someDomain.com/path' দেন তবে তা বাতিল হয়ে যাবে। সুতরাং এটি কোনও প্রোটোকল (যেমন HTTP বা https) উপস্থিত থাকার প্রত্যাশা করে।
অ্যান্ডি

0

ইনপুট ইউআরএল মোট জঞ্জাল না হলে এটি সাধারণত খুব ভালভাবে কাজ করবে। এটি সাবডোমেনটি সরিয়ে দেয়।

$host = parse_url( $Row->url, PHP_URL_HOST );
$parts = explode( '.', $host );
$parts = array_reverse( $parts );
$domain = $parts[1].'.'.$parts[0];

উদাহরণ

ইনপুট: http://www2.website.com:8080/some/file/structure?some=parameters

আউটপুট: website.com


0

ওয়ার্ল্ডফজর এবং অ্যালিক্স এক্সেলের উত্তরগুলিকে একটি ছোট ফাংশনে সংযুক্ত করা যা বেশিরভাগ ব্যবহারের ক্ষেত্রে পরিচালনা করবে:

function get_url_hostname($url) {

    $parse = parse_url($url);
    return str_ireplace('www.', '', $parse['host']);

}

get_url_hostname('http://www.google.com/example/path/file.html'); // google.com

এটি সীমাবদ্ধ সমাধান
এমজিই

0
function getTrimmedUrl($link)
{
    $str = str_replace(["www.","https://","http://"],[''],$link);
    $link = explode("/",$str);
    return strtolower($link[0]);                
}


-6

ঠিক নীচের মত ব্যবহার করুন ...

<?php
   echo $_SERVER['SERVER_NAME'];
?>

1
এটি সার্ভারটি ধরে নেওয়া হচ্ছে আপনি যে url থেকে ডোমেনটি পুনরুদ্ধার করতে চান তা। বিষয়টি তেমন নয়।
ওভারকোড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.