PHP URL'den alan adını Ayrıştırma

3 Cevap php

PHP nasıl URL'den bir alanı ayrıştırmak? Ben bir ülke etki alanı veritabanına ihtiyaç gibi görünüyor.

Örnekler:

http://mail.google.com/hfjdhfjd/jhfjd.html -> google.com
http://www.google.bg/jhdjhf/djfhj.html -> google.bg
http://www.google.co.uk/djhdjhf.php -> google.co.uk
http://www.tsk.tr/jhjgc.aspx -> tsk.tr
http://subsub.sub.nic.tr/ -> nic.tr
http://subsub.sub.google.com.tr -> google.com.tr
http://subsub.sub.itoy.info.tr -> itoy.info.tr

Bu whois isteği ile yapılabilir mi?

Edit: .tr (www.nic.tr, www.tsk.tr) diğerleri bildiğiniz gibidir ile birkaç alan adları vardır: www.something.com.tr, {[( 4)]}

Ayrıca hiçbir www.something.com.bg, www.something.org.bg yoktur. Bunlar www.something.bg gibi Almanların .de

Ancak, var olan www.something.a.bg, www.something.b.bg, böylece a.bg, b.bg, c.bg ve. (a.bg co.uk gibi)

Bu üst alan adlarının listesi vardır net olmalıdır.

Check how is coloured the url http://www.agrotehnika97.a.bg/ in Internet Explorer. Check also

www.google.co.uk<br>
www.google.com.tr<br>
www.nic.tr<br>
www.tsk.tr

3 Cevap

Etki saklanır $_SERVER['HTTP_HOST'].

EDIT: Ben bu bütün alanı döndürür inanıyorum. Sadece üst düzey etki alanını elde etmek için, bu yapabilirdi:

// Add all your wanted subdomains that act as top-level domains, here (e.g. 'co.cc' or 'co.uk')
// As array key, use the last part ('cc' and 'uk' in the above examples) and the first part as sub-array elements for that key
$allowed_subdomains = array(
    'cc'    => array(
        'co'
    ),
    'uk'    => array(
        'co'
    )
);

$domain = $_SERVER['HTTP_HOST'];
$parts = explode('.', $domain);
$top_level = array_pop($parts);

// Take care of allowed subdomains
if (isset($allowed_subdomains[$top_level]))
{
    if (in_array(end($parts), $allowed_subdomains[$top_level]))
        $top_level = array_pop($parts).'.'.$top_level;
}

$top_level = array_pop($parts).'.'.$top_level;

You can use parse_url() to split it up and get what you want. Here's an example...

    $url = 'http://www.google.com/search?hl=en&source=hp&q=google&btnG=Google+Search&meta=lr%3D&aq=&oq=dasd';
    print_r(parse_url($url));

Yankılanacak ...

Array
(
    [scheme] => http
    [host] => www.google.com
    [path] => /search
    [query] => hl=en&source=hp&q=google&btnG=Google+Search&meta=lr%3D&aq=&oq=dasd
)

I reckon you'll need a list of all suffixes used after a domain name. http://publicsuffix.org/list/ provides an up-to-date (or so they claim) of all suffixes in use currently. The list is actually here Now the idea would be for you to parse up that list into a structure, with different levels split by the dot, starting by the end levels:

so for instance for the domains: com.la com.tr com.lc

Eğer ile bitirmek istiyorum:

[la]=>[com]
[lc]=>[com]

vs ..

Sonra (parse_url kullanarak) base_url dan host almak istiyorum, ve noktalarla patlayabilir istiyorum. ve sonuncusu ile başlayarak yapısına karşı değerleri eşleşen başlangıç:

böylece google.com.tr için size google kez olsun sonra com, sonra istediğiniz ne olduğu, bir eşleşme bulmak değil, tr eşleştirerek başlamak istiyorum ...