помогите с регулярным выражением на php

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

Всех с праздником!

Есть урл

/quick_sch.php?operation=%D0%9F%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%D0%B0&area_min=%D0%9E%D1%82&area_max=%D0%94%D0%BE&price_min=%D0%9E%D1%82&price_max=%D0%94%D0%BE&quick_ok=%D0%98%D1%81%D0%BA%D0%B0%D1%82%D1%8C+%3E%3E&page=10

и есть регулярное выражение

|page=[0-9]{1,2}|Uis

я в них не очень силен, но как я понимаю должна выбираться подстрока, где после page= идет минимум один и максимум 2 числовых символа. Но если в урле например page=10 - выбирается только page=1, точнее заменяется, потому что я использую это выражение в preg_replace. Помогите, что я не так делаю?

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

я же вам писал уже её

@page=[0-9]+@smi

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

так тоже не работает

прошу прощения именно так заработало! Спасибо еще раз!!!

а может вы меня просветите чем запись

|page=[0-9]+|Uis отличается от

@page=[0-9]+@smi

??? В моем варианте не работает, а как вы написали - все ок

L
На сайте с 07.12.2007
Offline
351
#3
DriverCat:
регулярное выражение
|page=[0-9]{1,2}|Uis

я в них не очень силен, но как я понимаю должна выбираться подстрока, где после page= идет минимум один и максимум 2 числовых символа. Но если в урле например page=10 - выбирается

Модификатор U - уменьшает жадность регулярки, поэтому она останавливается на первом минимальном соответствии условию.

DriverCat:
Помогите, что я не так делаю?

У Вас неправильный подход к парсингу uri.

Посмотрите функцию parse_str (string str [, array arr]) или разработайте свой более надёжный алгоритм парсинга. Выдергивать каждый параметр отдельной регуляркой - не комильфо.

DriverCat
На сайте с 10.04.2008
Offline
116
#4
Ladycharm:
Модификатор U - уменьшает жадность регулярки, поэтому она останавливается на первом минимальном соответствии условию.

У Вас неправильный подход к парсингу uri.

Посмотрите функцию parse_str (string str [, array arr]) или разработайте свой более надёжный алгоритм парсинга. Выдергивать каждый параметр отдельной регуляркой - не комильфо.

Понятно, спасибо! Да мне не нужно каждый параметр выдергивать, это вообще не парсинг - это просто формирование новой ссылки со следующей страницей, то есть нужно поменять только page=

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