Изменение значения параметра в URL

Меняем параметр в адресе текущей страницы:

Скопировано
$query = $_GET;
$query['param1'] = 'new_value';
$query_result = http_build_query( $query );
$new_link = '//' . $_SERVER['HTTP_HOST'] . strtok( $_SERVER['REQUEST_URI'], '?' ) . "?$query_result";
Показать код

Если адрес страницы к примеру был https://site.ru?param1=111&param2=222, то теперь он будет https://site.ru?param1=new_value&param2=222. То есть мы поменяли значение у параметра param1.

Меняем параметр в URL в виде строки:

Скопировано
$link = 'https://site.ru?param1=111&param2=222';
$param_name = 'param1';
$value = 'new_value';
$new_link = preg_replace( "/$param_name=[^&]+(.*)/", "$param_name=$value$1", $link );
Показать код

На выходе переменная $new_link будет равна https://site.ru?param1=new_value&param2=222.