2012-04-23 3 views
0

Мы перечислим URL-адреса в этом формате (http://www.xyz.gov.ac.in). Не все из них выглядят так, некоторые из них имеют нормальные домены. Я смущен тем, как получить доменное имя из 3-точечного URL-адреса. Код, который у нас есть, отлично работает для доменных имен с двумя точками. Вот код, который мы имеем:Regex для доменов, имеющих три точки: - «gov.ac.in»

function get_domain($url) 
{ 
    $pieces = parse_url($url); 
    $domain = isset($pieces['host']) ? $pieces['host'] : ''; 
    if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) { 
    return $regs['domain']; 
    } 
    return false; 
} 

echo get_domain($url) ; 

Как мы можем изменить приведенный выше код для размещения 3 пунктирных областей, а также других типов?

эха результатов должны быть в этом формате xyz.gov.ac.in

ответ

0

Попробуйте это:

/(^[\w|-]+\.)(?P<domain>([\w|-]+\.)+(\w+))/i  

Надеется, что это поможет ..

+0

если мы URL-адрес http://www.octave-global.com, то это не сработает. пожалуйста, помогите мне решить эту проблему. – PPS

+0

Я отредактировал свой ответ, пожалуйста, взгляните. –

0

Вы должны быть в состоянии использовать эту Regex вместо

/(?P<domain>([a-z0-9][a-z0-9\-]{1,63}\.)+[a-z\.]{2,6})$/i 
+0

Это позволяет Субдомен. например, если URl является http: //forum.xyz.com.uj.xa/adsfasdf.lkj ... Он возвращает forum.xyz.com.uj.xa вместо xyz.com.uj.xa – PPS

1

В принципе, вы не можете. По крайней мере, не без таблицы поиска, которая имеет все «TLD».

Например, в моей стране (Нидерландах) у нас есть .nl и .co.nl. Но www.gov.nl - обычный сайт (я пытаюсь проиллюстрировать, что вы не можете автоматически сказать, что gov. не является доменом). И www.edu.nl не существует.

Любое стандартное регулярное выражение, которое попытается проанализировать их, скажет вам, что домен www.gov.nl, а на самом деле домен gov.nl. То же самое для edu.nl.

Единственный способ добиться того, чего вы хотите, - получить список всех TLD (и под-TLD) и использовать их для их анализа.

Я считаю, что в Firefox и Chrome реализован такой список (для окраски доменного имени в URL-адресе) и постоянно поддерживать его в актуальном состоянии. Может быть, посмотрите в этих источниках?

Смежные вопросы