|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
||||||
Обработка адресов. Убрать все после "?"23.09.2014, 17:34. Показов 3286. Ответов 9
Метки нет (Все метки)
Задача такая. Есть адрес вида: /news/novye-chekhly-dlya-iphone-4?clear_cache=Y
Нужно привести к: /news/index.php?CODE=$1 , где $1 - это все после слеша и до ?, в данном случае novye-chekhly-dlya-iphone-4. Я пишу
0
|
||||||
| 23.09.2014, 17:34 | |
|
Ответы с готовыми решениями:
9
Убрать все до и после
Как убрать конфликт адресов |
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|
| 23.09.2014, 18:40 | |
|
http://php.net/manual/ru/function.strpos.php
http://php.net/manual/ru/function.substr.php регулярки здесь лишние
0
|
|
|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
|
| 23.09.2014, 18:43 [ТС] | |
|
Увы, без регулярок не обойтись. preg_replace автоматически вызывается в битриксе при обработке адресов. На данный момент это единственный способ "обрезать" лишние параметры в _REQUEST
0
|
|
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
||
| 23.09.2014, 19:52 | ||
|
0
|
||
|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
||||||||||||||||
| 23.09.2014, 20:41 [ТС] | ||||||||||||||||
|
"?clear_cache=Y" вот что я понимаю под доп. параметрами.
Вообщем я поковырялся, и переделал регулярку. Сейчас проблема такая:
если верить википедии, то нужно сделать так:
Добавлено через 38 минут Я кажется понимаю в чем трабла, но еще не знаю как решить Вот результат с плюсом и без плюса. Нужно как-то сделать, чтобы обрезались все "дополнительные параметры", а не последний. Не могу понять почему, если написать (\?(.*))+,то обрезается только последнее вхождение в строку,начинающееся с "?", а если написать (\?(.*))(\?(.*)), то оба. Видимо я очень плохо понимаю работу квантификатора "+". Тут проблема в том, что я не могу знать сколько будет вхождений (\?(.*))
0
|
||||||||||||||||
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|||||||
| 23.09.2014, 22:10 | |||||||
|
google.ru/search?q=амперсанд&oq=амперсанд&aqs=chrome... Ссылку в которой более одного вопросительного знака Вы не увидите, да и это неверно. И Ваше регулярное выражение для правильных ссылок с GET запросом вполне подходит. Если все-таки дело идет не о HTTP протоколе, то достаточного такого выражения:
1
|
|||||||
|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
||||||||||||||||
| 23.09.2014, 23:11 [ТС] | ||||||||||||||||
|
тогда задача усложняется, но в любом случае
http://take.ms/3ynDX Добавлено через 11 минут одна из причин почему я это делаю: Кликните здесь для просмотра всего текста
Одна интересная особенность, которую надо учитывать. Допустим вам надо сделать преобразование такого вида, чтобы при открытии страницы /news/445.php происходило преобразование в /news/detail.php?ID=445 Можно использовать такое правило Код
Оно даже будет работать, но ровно до тех пор пока в строке не появятся дополнительные параметры. Например пользователь перешел с внешнего ресурса и в URL была добавлена метка для Google Analitics, запрошенный URL получился примерно такой /news/445.php?utm_source=google. Вместо текста новости вы увидите сообщение "Элемент не найден", потому что в результате преобразования получился такой адрес /news/detail.php?ID=445?utm_source=google. Ниже приведен код, решающий эту проблему:
Этот комментарий был на странице в разделе "обработка адресов" в документации к битриксу. Я настраивал ЧПУ через обработку адресов и столкнулся с проблеммой что при сбросе кэша у меня в _REQUEST передается не правильный CODE, т.к. к нему прибавляется "?clear_cache=Y". Тогда я начал думать о том чтобы разделить нужную мне информацию и все что идет за ней. С задачей обработки адресов при сбросе кэша я справился, но что делать если добавится еще метка, как в случае описанном выше?
0
|
||||||||||||||||
|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
|
| 23.09.2014, 23:20 [ТС] | |
|
Как оно работает сейчас
0
|
|
|
Невнимательный
|
|||
| 24.09.2014, 05:07 | |||
|
Непонятно чем не устраивало предлогаемое
, то замените на "#^/news/([^\\?]+)(\\?(.*))?#"
, причём в обоих случаях как-бы до возможного ?-символа. //.... Если правильно смог рассмотреть картинку
1
|
|||
|
3 / 2 / 1
Регистрация: 27.12.2010
Сообщений: 31
|
|
| 24.09.2014, 09:20 [ТС] | |
|
Предлагаемый пример вообще мне не подходит
А "#^/news/([^\\?]+)(\\?(.*))?#" не работает, я уже писал об этом и скрин присылал Добавлено через 8 минут Лол без понятия что произошло, но вчера регулярка #^/news/([^\\?]+)(\\?(.*))?# не сработала. Только что снова ее вставил, даже автозаполнение в хроме подсказало что я уже писал это правило и оно сработало. Особая магия битрикса. Всем спасибо за помощь. Постараюсь не забыть и сделать итоговое сообщение с подведением результатов.
0
|
|
| 24.09.2014, 09:20 | |
|
Помогаю со студенческими работами здесь
10
Как убрать из строки все, что находится после тире Как корректно убрать расширения из адресов страниц Обработка несуществующих адресов сайта
MVC: организация и обработка адресов для новостей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|