|
|
|
| Возникла задача: вытащить из адреса домен. То есть из www.site.ru получить site.ru. Для поддомена www решил проблему так:
<?
$dom = "www.site.ru"
if (substr_count('www.', $dom) == 1)
$dom = substr($a, strpos('www.'));
?>
|
Но это, во-первых, как-то некрасиво, а во-вторых, поддомен может быть и ww1, и, теоретически, любой другой. Как можно сделать универсальнее? parse_url() не подходит, она возвращает вместе с поддоменами. | |
|
|
|
|
|
|
|
для: Киналь
(22.09.2006 в 20:26)
| | Вот 2 варианта
<?
$url = 'http://www19.mail.site.ru';
$pos = strrpos ($url, '.');
$domain = substr($url, $pos);
$url = substr($url, 0, $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];
?>
|
| |
|
|
|
|
|
|
|
для: Киналь
(22.09.2006 в 20:26)
| | Можно регулярным выражением откусить домен
<?php
$dom = "www.site.ru";
$dom = preg_replace("|.*?([^\.]+\.[^\.]+)$|","\\1",$dom);
echo $dom;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.09.2006 в 20:48)
| | Да, про регулярки не подумал, спасибо. Но если адрес будет, например, www2.site.net.ru? | |
|
|
|
|
|
|
|
для: Киналь
(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];
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(23.09.2006 в 11:31)
| | Спасибо, воспользовался вторым вариантом, вроде работает=) | |
|
|
|