В регулярках вообще не разбираюсь!
Функция должна проверять введеный домен на валидность, и если введено www. или http://, то должно обрезать их.
Пример:
www.test.ru/ => test.ru
http://www.test.ru/ => test.ru
http://test.ru => test.ru
http://www.тест.рф/ => тест.рф
и т.д.
Буду очень благодарен за помощь!
Спустя 1 час, 19 минут, 59 секунд (15.09.2012 - 11:55) redreem написал(а):
если сайт в UTF-8, то так. если в cp1251, то ненужны перекодирования в начале и в конце функции.
function clean_url($urlUTF) {
$url = strtolower( iconv('utf-8', 'cp1251', $urlUTF) );
if( $url == '' ) return;
$url = str_replace( "http://", "", $url );
$url = str_replace( "https://", "", $url );
if( substr( $url, 0, 4 ) == 'www.' ) $url = substr( $url, 4 );
$url = explode( '/', $url );
$url = reset( $url );
$url = explode( ':', $url );
$url = reset( $url );
return iconv('cp1251', 'utf-8', $url);
}
Спустя 4 минуты, 12 секунд (15.09.2012 - 12:00) 123456 написал(а):
Спасибо!
А я думал, что только через регулярки это можно сделать
А я думал, что только через регулярки это можно сделать
Спустя 16 минут, 3 секунды (15.09.2012 - 12:16) 123456 написал(а):
еще в конце твоей функции надо проверить $url на валидность.
Может кто поможет?
Может кто поможет?
Спустя 6 минут, 11 секунд (15.09.2012 - 12:22) redreem написал(а):
ну в конце можно как раз регулярку задействовать. в нете полно регулярок для проверки домена на валидность.
Спустя 21 минута, 41 секунда (15.09.2012 - 12:43) walerus написал(а):
$array = array( 'www.test.ru', 'http://www.test.ru/', 'http://test.ru', 'http://www.тест.рф/' );такое не подойдет ?
$string = 'http://www.test.ru/';
function getDomen ( $data )
{
if ( is_array( $data ) )
{
$result = array();
foreach( $data as $array_value )
{
$tmp = parse_url( str_replace( 'www.', '', $array_value ) );
if ( isset ( $tmp['scheme'] ) )
$result[] = trim( $tmp['host'] );
else
$result[] = trim( $tmp['path'] );
}
return $result;
}
$tmp = parse_url( str_replace( 'www.', '', trim( $data ) ) );
if ( isset ( $tmp['scheme'] ) )
return trim( $tmp['host'] );
else
return trim( $tmp['path'] );
}
// На вход можно подавать как массив так и строку
print_r( getDomen( $array ) );
echo "<hr>\n";
echo getDomen( $string );
/*
Результат
Array
(
[0] => test.ru
[1] => test.ru
[2] => test.ru
[3] => тест.рф
)
<hr>
test.ru
*/
Спустя 2 минуты, 34 секунды (15.09.2012 - 12:46) 123456 написал(а):
Нет не подойдет, т.к. я незнаю конкретного URL
Спустя 5 часов, 28 минут, 13 секунд (15.09.2012 - 18:14) walerus написал(а):
123456 В смысле ? - "не знаю конкретного урла" ?... приведи примеры какие могут быть урлы, и чего от них требуется...