Удаление параметра из URL

Скопировано
$url = 'http://site.ru/?a=1&b=2&c=3';
$param = 'b';	// параметр, который надо удалить
$new_url = preg_replace( '/([?&])' . $param . '=[^&]+(&|$)/', '$1', $url );
if( mb_substr( $new_url, -1 ) == '&' ) $new_url = mb_substr( $new_url, 0, -1 );
Показать код

В результате переменная $new_url будет равна http://site.ru/?a=1&c=3.

И еще один вариант. Предполагаю что более надежный:

Скопировано
$url = 'http://site.ru/?a=1&b=2&c=3';
$clear_url = preg_replace( '/\\?.*/', '', $url );
$query = parse_url( $url, PHP_URL_QUERY );
parse_str( $query, $arr );
unset( $arr['b'] );
$query = http_build_query( $arr );
$new_url = $clear_url . $query;
Показать код

В этом варианте так же видно как удалить параметр из строки параметров, когда URL не полный. Смотрим строки 4-6.