Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функции для разборки домена
 
 автор: tAleks   (20.07.2008 в 12:56)   письмо автору
 
 

Есть-ли в PHP специальные функции для разборки домена?

Например, Домен может быть:

1. sub.site.ru
2. www.sub.site.ru
3. www.site.ru
4. site.ru

Нужно чтобы из любого варианта извлекалась первая часть, т.е. "sub", а в 3 и 4 варианте, пустая строка.

Есть ли на этот счет, что-нибудь специализированное? Или только вручную?

   
 
 автор: tester   (20.07.2008 в 13:46)   письмо автору
 
   для: tAleks   (20.07.2008 в 12:56)
 

есть parse_url, но она парсит ссылки, а вообще я бы рег. выражениями делал

   
 
 автор: tester   (20.07.2008 в 13:49)   письмо автору
 
   для: tester   (20.07.2008 в 13:46)
 

function parseUrl($url) {
        $r  = "^(?:(?P<scheme>\w+)://)?";
        $r .= "(?:(?P<login>\w+):(?P<pass>\w+)@)?";
        $r .= "(?P<host>(?:(?P<subdomain>[-\w\.]+)\.)?" . "(?P<domain>[-\w]+\.(?P<extension>\w+)))";
        $r .= "(?::(?P<port>\d+))?";
        $r .= "(?P<path>[\w/]*/(?P<file>\w+(?:\.\w+)?)?)?";
        $r .= "(?:\?(?P<arg>[\w=&]+))?";
        $r .= "(?:#(?P<anchor>\w+))?";
        $r = "!$r!";                                                // Delimiters
      
        preg_match ( $r, $url, $out );
      
        return $out;
    }


попробуй, должно помочь =)

   
 
 автор: Trianon   (20.07.2008 в 14:03)   письмо автору
 
   для: tAleks   (20.07.2008 в 12:56)
 

Ничего специализированного Вы не найдете.
Из-за нескольких заблуждений. Вы почему-то считаете, что
1. что буквы www. не являются обычным именем узла.
2. домены могут быть только третьего уровня. (иначе непонятны Ваши слова "пустая строка в 4 варианте)
3. что www.site.ru - домен того же уровня (или даже тот же самый домен) что и site.ru

   
 
 автор: а-я   (21.07.2008 в 03:02)   письмо автору
 
   для: tAleks   (20.07.2008 в 12:56)
 

может как нибудь так пойдет:

<?
 define
('DOMAIN','site.ru'); // Указываем главный домен
 
$subs str_replace('.'.DOMAIN,'',$_SERVER['HTTP_HOST']); // удаляем его
  // Если есть поддомены, парсируем
  
if(!empty($subs)) 
   
$subs explode('.',$subs);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования