private static function removeFilename($url) {
return substr($url, 0, strrpos($url, '/') + 1);
}
substr()
Возвращает часть строки, заданную параметрами start и length.
strrpos()
Найти числовую позицию последнегопоявление иглы в строке сена.
Это не будет работать, если url http://cms.local без последней косой черты.
РЕДАКТИРОВАТЬ
Если вам нужно сохранить строку запроса и удалить только имя файла + расширение:
function removeFilename($url) {
$queryString = parse_url($url, PHP_URL_QUERY);
return substr($url, 0, strrpos($url, '/') + 1) . "?" . $queryString;
}
parse_url()
функция анализирует URL-адрес и возвращает ассоциативный массив, содержащий любой из различныхкомпоненты URL, которые присутствуют.Значения элементов массива не декодируются с помощью URL.
component
Укажите один из следующих вариантов: PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_AGMENT * PHP 10_URL_QUERY *только определенный компонент URL в виде строки (кроме случаев, когда задан PHP_URL_PORT, в этом случае возвращаемое значение будет целым числом).
РЕДАКТИРОВАТЬ 2 Окончательное решение с добавлением завершающегокосая черта, если URL http://cms.local
private static function addTrailingSlash($url) {
$url = parse_url($url);
if(!isset($url['path'])) $url['path'] = '/';
$surl = $url['scheme']."://".$url['host'].$url['path'].'?'.$url['query'];
return $surl;
}
private static function removeFilename($url) {
$url = addTrailingSlash($url);
$queryString = parse_url($url, PHP_URL_QUERY);
return substr($url, 0, strrpos($url, '/') + 1) . "?" . $queryString;
}