Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Нужна помощь в функции
Новая тема
Ответить
цитата
04/07/12 в 16:50
Lexikon
Этой функцией выдергиваю домен из url но вот проблема в том что если юрл попадается написаный через тире. Т.е. best-domain.com скрипт выдаст domain.com, теряется та чать которая перед тире.
function domain($str){ // ФУНКЦИЯ ПОЛУЧЕНИЯ ДОМЕНА ИЗ URL.
$domain = parse_url($str);
preg_match_all("/(\w+)/i", $domain["host"], $arr, PREG_PATTERN_ORDER);
$res = array_reverse($arr[0]);
$result = "$res[1].$res[0]";
$result = strtolower($result);
return $result;
}
цитата
04/07/12 в 16:52
atrius
http://php.net/manual/ru/function.parse-url.php
не оно?
цитата
04/07/12 в 16:56
Privater666
parse_url
цитата
04/07/12 в 17:20
Lexikon
да, тут можно сделать так:
<?php
function domain($str){
$domain = parse_url($str);
$result = $domain['host'];
return $result;
}
$url = "https://www.master-x.com/forum/postings/2287090/";
echo domain($url);
?>
но если юрл будет:
$url = "http://www.sub.master-x.com/forum/postings/2287090/";
or
$url = "https://www.master-x.com/forum/postings/2287090/";
то скрипт выдаст:
sub.master-x.com
master-x.com
А мне нужно получить чистый:
master-x.com
цитата
04/07/12 в 17:30
Lexikon
посидел покумекал вышло так:
<?php
function domain($str){
$domain = parse_url($str);
$domain = $domain['host'];
$arr_domain = explode(".", $domain);
$res = array_reverse($arr_domain);
$result = "$res[1].$res[0]";
$result = strtolower($result);
return $result;
}
$url = "http://www.sub.master-x.com/forum/postings/2287090/";
echo domain($url);
?>
но тут есть одно НО, если ЮРЛ который отправляется на обработку будет выглядеть так:
domain-x.com.
ua
то скрипт выдаст:
com.ua
цитата
04/07/12 в 18:13
prlog
<?php
function domain($str){
$domain = parse_url($str);
$domain = $domain['host'];
$arr_domain = explode(".", $domain);
$res = array_reverse($arr_domain);
if(strlen($res[1])<4)
{
$result = "$res[2].$res[1].$res[0]";
}
else
{
$result = "$res[1].$res[0]";
}
$result = strtolower($result);
return $result;
}
$url = "http://www.sub.master-x.com/forum/postings/2287090/";
echo domain($url);
?>
цитата
04/07/12 в 18:51
Yacc
Код:
public function get_domain( $url ) {
//
http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
$tlds = array(
'com' => true,
'net' => true,
'org' => true,
'com.ua' => true
);
$host = parse_url( $url, PHP_URL_HOST );
$arr = array( false );
foreach( $tlds as $tld => $allow )
if( $allow AND ( $pos = stripos( $host, $tld ) ) === strlen( $host ) - strlen( $tld ) ) {
$arr = explode( '.', substr( $host, 0, $pos - 1 ) );
break;
}
return end( $arr );
}
цитата
04/07/12 в 19:38
Noobus Boobus
я ограничиваюсь
Код:
str_replace('www.', '', strtolower(parse_url($url, PHP_URL_HOST)))
Но вообще список доменов первого уровня (в том числе составного гумна типа com.ua) можно взять еще, он не так часто меняется.
цитата
05/07/12 в 02:49
Nux
примерно так должно быть.
Код:
function domain($str){
$domain = parse_url($str);
preg_match("/([a-z0-9-_]{2,63}\.[a-z\.]{2,6})$/i",$domain['host'],$matches);
$result = $matches['1'];
return $result;
}
$url = "https://www.master-x.com/forum/postings/2287090/";
echo domain($url);
Новая тема
Ответить
Эта страница в полной версии