Как изменить гет запрос регулярным выражением?
Не проверяя:$uri = preg_replace("/&page=(\d)/", $_SERVER['REQUEST_URI'], "&page=");
Сейчас пойду проверять :)
P.S.preg_replace("/^(.*)&page=(\d)$/", "$1&page=", $_SERVER['REQUEST_URI'])
Функцияfunction sgp($url, $varname, $value) // substitute get parameter
    {
		if (is_array($varname)) {
			foreach ($varname as $i => $n) {
				$v = (is_array($value))
					? ( isset($value[$i]) ? $value[$i] : NULL ) 
					: $value;
				$url = sgp($url, $n, $v);
			}
			return $url;
		}
         
        preg_match('/^([^?]+)(\?.*?)?(#.*)?$/', $url, $matches);
        $gp = (isset($matches[2])) ? $matches[2] : ''; // GET-parameters
        if (!$gp) return $url.'?'.$varname.'='.$value;
        
        $pattern = "/([?&])$varname=.*?(?=&|#|\z)/";
        if (preg_match($pattern, $gp)) {
            $substitution = ($value !== '') ? "\${1}$varname=" . preg_quote($value) : '';
            $newgp = preg_replace($pattern, $substitution, $gp); // new GET-parameters
            $newgp = preg_replace('/^&/', '?', $newgp); 
        }
        else    {
            $s = ($gp) ? '&' : '?';
            $newgp = $gp.$s.$varname.'='.$value;
        }
       
        $anchor = (isset($matches[3])) ? $matches[3] : '';
        $newurl = $matches[1].$newgp.$anchor;
        return $newurl;
    }
Вызов:<? echo sgp($_SERVER['REQUEST_URI'], 'page', 2);?>
Где:
1) наш URL
2) имя параметра который меняем
3) новое значение параметра
Если такого в строке еще нет, то он буде создан заново, если есть то изменится только значение.
В качестве значения можно применить и мат.функции вида$cur_page + 1;
1+1