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

Форум Регулярные Выражения

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

 

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

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

тема: Вытащить домен из url'а
 
 автор: Киналь   (22.09.2006 в 20:26)   письмо автору
 
 

Возникла задача: вытащить из адреса домен. То есть из www.site.ru получить site.ru. Для поддомена www решил проблему так:

<?
$dom 
"www.site.ru"

if (substr_count('www.'$dom) == 1)
       
$dom substr($astrpos('www.'));

?>

Но это, во-первых, как-то некрасиво, а во-вторых, поддомен может быть и ww1, и, теоретически, любой другой. Как можно сделать универсальнее? parse_url() не подходит, она возвращает вместе с поддоменами.

   
 
 автор: kasmanaft   (22.09.2006 в 20:44)   письмо автору
 
   для: Киналь   (22.09.2006 в 20:26)
 

Вот 2 варианта

<?
$url 
'http://www19.mail.site.ru';
$pos strrpos ($url'.');
$domain substr($url$pos);
$url substr($url0$pos);
$pos strrpos ($url'.');
if (
$pos != 0$pos++;
$domain substr($url$pos) . $domain;
echo 
$domain;
?>


<?
$url 
'http://www19.mail.site.ru/index.php?id=12';
if (
preg_match("#([\w]+\.[\w]{2,4})(/.*)?$#"$url$regs))
    echo 
$regs[1];
?>

   
 
 автор: cheops   (22.09.2006 в 20:48)   письмо автору
 
   для: Киналь   (22.09.2006 в 20:26)
 

Можно регулярным выражением откусить домен
<?php 
  $dom 
"www.site.ru";
  
$dom preg_replace("|.*?([^\.]+\.[^\.]+)$|","\\1",$dom);
  echo 
$dom;
?> 

   
 
 автор: Киналь   (22.09.2006 в 21:23)   письмо автору
 
   для: cheops   (22.09.2006 в 20:48)
 

Да, про регулярки не подумал, спасибо. Но если адрес будет, например, www2.site.net.ru?

   
 
 автор: kasmanaft   (23.09.2006 в 11:31)   письмо автору
 
   для: Киналь   (22.09.2006 в 21:23)
 

Можно конкретно указать, какие домены могут встречаться перед последним
(или второе, не совсем правильное рег. выр-е)

<?
$url 
'http://www19.mail.site.ru/index.php?id=12';
if (
preg_match("#([\w]+\.((net|com|info)\.)?[\w]{2,4})(/.*)?$#"$url$regs))
// if (preg_match("#([\w]+\.([\w]{2,4}\.)?[\w]{2,4})(/.*)?$#", $url, $regs))
    
echo $regs[1];
?>

   
 
 автор: Киналь   (23.09.2006 в 13:11)   письмо автору
 
   для: kasmanaft   (23.09.2006 в 11:31)
 

Спасибо, воспользовался вторым вариантом, вроде работает=)

   
Rambler's Top100
вверх

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