Удаление указанных параметров из URL
Как на php удалить определенные параметры из URL, сохранив все остальные составляющие ссылки
Чтобы удалить параметры из определенного URL, можно воспользоваться следующей функцией:
<?php
function remove_params_from_url($url, $paramsToRemove)
{
if (!is_array($paramsToRemove)) {
$paramsToRemove = [$paramsToRemove];
}
// Парсим URL
$parsed = parse_url($url);
// Если нет параметров, возвращаем исходный URL
if (!isset($parsed['query'])) {
return $url;
}
// Парсим параметры запроса
parse_str($parsed['query'], $params);
// Удаляем указанные параметры
foreach ($paramsToRemove as $param) {
unset($params[$param]);
}
// Собираем URL обратно
$result = '';
// Схема и хост (если есть)
if (isset($parsed['scheme'])) {
$result .= $parsed['scheme'] . '://';
}
if (isset($parsed['host'])) {
$result .= $parsed['host'];
}
// Путь
$result .= $parsed['path'] ?? '';
// Параметры (если остались)
if (!empty($params)) {
$result .= '?' . http_build_query($params);
}
// Якорь
if (isset($parsed['fragment'])) {
$result .= '#' . $parsed['fragment'];
}
return $result;
}
Функция разбирает переданный URL на части, используя функцию parse_url(), затем удаляет указанные параметры, после чего собирает URL обратно.
На вход принимает обрабатываемый URL, а также параметры, которые нужно удалить – можно передать строкой один параметр, а можно массивом несколько параметров.
При этом функция учитывает, что ссылка может быть относительной или абсолютной. Якорь тоже сохраняется, если он был.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий