как проще всего изменить параметр в ссылке

DriverCat
На сайте с 10.04.2008
Offline
116
876

Всех с наступающим праздником Рождества!

То ли я очень туплю, то ли просто мне не приходилось с этим сталкиваться. Допустим, есть урл

http://site.ru/page.php?id=2&color=3&page=1

Как мне проще всего написать ссылку (на PHP), чтобы она стала например

http://site.ru/page.php?id=2&color=3&page=2
- то есть изменить один параметр, например - номер страницы.

Просто, обычно обходился без параметров GET и писал просто <a href="?page=2"></a>. Но здесь нужно сохранить все имеющиеся параметры и изменить только один или добавить его.

Вариант с разбором по частям всего урла не очень удобный как мне кажется.

Поделитесь, кто как обычно делает, может решение элементарное?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

$urlbold=preg_replace('@page=[0-9]+@smi',"page=2",$_SERVER['REQUEST_URI']);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
DriverCat
На сайте с 10.04.2008
Offline
116
#2
LEOnidUKG:
$urlbold=preg_replace('@page=[0-9]+@smi',"page=2",$_SERVER['REQUEST_URI']);

Спасибо! Но я надеялся что существуют еще варианты, но нет так нет, придется ручками.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

Я просто не знаю как там у вас формируется в движке. А этот вариант просто решает в лоб задачу.

DriverCat
На сайте с 10.04.2008
Offline
116
#4
LEOnidUKG:
Я просто не знаю как там у вас формируется в движке. А этот вариант просто решает в лоб задачу.

да я самопис пишу. подходит, вот только еще подвопрос такой - обычно ведь если первая страница - page=1 не пишется в урле. То есть этот вариант не подойдет, если нет еще этого параметра. Это получается надо проверять, есть или нет, а потом либо добавлять его, либо заменять как вы написали.

Вот в принципе из-за всех этих мелких неудобств эта тема и создавалась...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5
DriverCat:
да я самопис пишу. подходит, вот только еще подвопрос такой - обычно ведь если первая страница - page=1 не пишется в урле. То есть этот вариант не подойдет, если нет еще этого параметра. Это получается надо проверять, есть или нет, а потом либо добавлять его, либо заменять как вы написали.
Вот в принципе из-за всех этих мелких неудобств эта тема и создавалась...

Я всегда руками прописываю урлы т.е. если это постраничка, то я точно знаю какой будет урл и под него делаю остальные.

LEOnidUKG добавил 06.01.2011 в 23:38

А так можно быстренько расширить:

if (preg_match('@page=@smi'),$_SERVER['REQUEST_URI']){

$urlbold=preg_replace('@page=[0-9]+@smi',"page=2",$_SERVER['REQUEST_URI']);}

else

{$urlbold=$_SERVER['REQUEST_URI'].'&page=2';}

DriverCat
На сайте с 10.04.2008
Offline
116
#6
LEOnidUKG:
Я всегда руками прописываю урлы т.е. если это постраничка, то я точно знаю какой будет урл и под него делаю остальные.

LEOnidUKG добавил 06.01.2011 в 23:38
А так можно быстренько расширить:

if (preg_match('@page=@smi'),$_SERVER['REQUEST_URI']){
$urlbold=preg_replace('@page=[0-9]+@smi',"page=2",$_SERVER['REQUEST_URI']);}
else
{$urlbold=$_SERVER['REQUEST_URI'].'&page=2';}

ну это да, спасибо! у меня просто из формы GETом передаются данные, которые ввел пользователь, соответственно неизвестно что он там ввел.

DriverCat добавил 07.01.2011 в 12:51

DriverCat:
ну это да, спасибо! у меня просто из формы GETом передаются данные, которые ввел пользователь, соответственно неизвестно что он там ввел.

вот еще никак не разберусь с регулярным выражением. Например, у меня есть выражение

|page=[0-9]{1,2}|Uis
- по идее это должно значить, что может идти от одного до двух числовых символов, ведь так?

Если у меня page=4 например, все ок, а если двухзначное, например, page=12 - заменяет только первый символ.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий