Файл: share/sys/classes/shareCheck.class.php
Строк: 10
<?php
abstract class shareCheck{
static function url($url){
// Массив с компонентами URL, сгенерированный функцией parse_url()
$arUrl = parse_url($url) ;
$arUrl['path'] = isset($arUrl['path']) ? $arUrl['path'] : '' ;
$ret = array() ;
// Если не был указан протокол, или
// указанный протокол некорректен для url
if(!array_key_exists('scheme', $arUrl) || !in_array($arUrl['scheme'], array('http', 'https'))){
// Задаем протокол по умолчанию - http
$arUrl['scheme'] = 'http' ;
}
// Если функция parse_url смогла определить host
if (array_key_exists('host', $arUrl) && !empty($arUrl['host'])){
// Собираем конечное значение url
$ret[] = sprintf('%s://%s%s', $arUrl['scheme'], $arUrl['host'], $arUrl['path']) ;
}
// Если значение хоста не определено
// (обычно так бывает, если не указан протокол),
// Проверяем $arUrl['path'] на соответствие шаблона URL.
elseif(preg_match('/^w+.[w.]+(/.*)?$/', $arUrl['path'])){
// Собираем URL
$ret[] = sprintf('%s://%s', $arUrl['scheme'], $arUrl['path']) ;
}
// Если url валидный и передана строка параметров запроса
if(count($ret) && !empty($arUrl['query'])){
$ret[] = sprintf('?%s', $arUrl['query']) ;
}
return join($ret) ;
}
}