удалить get параметр php
Удаление параметра из строки GET по регулярному выражению
Но нормальных результатов оно не дает, что я не правильно составил тут? (делал по учебнику)
3 ответа 3
Без регулярных выражений:
Для корректного удаления подстроки понадобится шаблон, состоящий из трёх альтернатив:
Если удаляемый элемент находится сразу после вопросительного знака, но не является единственным GET-параметром
(в этом случае надо оставить знак «?», и удалить знак «&» вместе с удаляемым элементом)
Если удаляемый элемент находится сразу после вопросительного знака, и является единственным GET-параметром
(в этом случае надо удалить знак «?», и все остальные символы после него)
Если удаляемый элемент находится в любой другой позиции подстроки
(в этом случае, вместе с удаляемыми символами надо удалять и знак «&», предшествующий удаляемой подстроке)
Шаблон будет иметь следующий вид:
В комплекте с PHP-функцией он будет выглядеть таким образом:
Удаление GET-параметра из URL
В сегодняшней статье я решил разобрать весьма полезную функцию, удаляющую любой GET-параметр из строки. Где это может быть нужно? Допустим, Вы делаете навигацию по страницам. И Вам необходимо сделать универсальный скрипт её создания, добавляя к текущему URL параметр page. Однако, текущий URL может быть уже с параметром page. В итоге, получится, например, такой URL: «/?page=5&page=7«. Тогда как правильный должен быть: «/?page=7«. Таким образом, необходимо сначала удалить параметр page, а уже потом скрипт создания навигации по страницам сделает своё дело.
Привожу сразу код функции, которая это делает:
Вот так можно легко удалить GET-параметр из URL, вызвав функцию из этой статьи.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 5 ):
Зачем такие сложности с разделением ссылки на 2 части? Есть же pparse_url
А еще есть strTok(), которая «отсекает» все вместе переданным токеном.
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Добавить, изменить и удалить параметры GET из строки запроса
Допустим, текущая строка запроса следующая
Мне нужна функция, которая может добавлять и удалять несколько параметров из строки запроса. Например:
Таким образом, функция должна не только добавлять новые параметры (eyes = 2 и finger = 10), но и изменять уже существующие (car = black => car = purple).
Все эти новые и измененные параметры могут быть переданы в первом аргументе функции. Разделены по «&».
Второй аргумент функции должен передавать все ключи параметров, которые должны быть удалены из строки запроса, если она есть.
Я управлял только первой частью, которая может добавлять и заменять параметры. Но, может быть, у кого-то есть более эффективный способ, включая второй аргумент для удаления вещей из строки запроса.
5 ответов
Это должно работать для вас, используя parse_str (), array_merge () и http_build_query ()
Я перебрал бы массив запросов в поисках наличия ключей в массиве замены и обновлялся на основе этого. После этого я перебираю в обратном порядке массив запросов, ища ключи в массиве удаления, и удаляю эти экземпляры из массива запросов.
Поскольку 2-й должен быть выполнен задом наперед, чтобы предотвратить проблемы в индексах, вы не можете выполнять оба цикла одновременно. Если вы попробуете это, или даже попытаетесь выполнить 2-й шаг вперед, вам понадобится больше кода, и он очень запутается. Я предлагаю сделать удаление последним, так как вы, очевидно, хотите сохранить порядок существующих ключей, и это только минимальное снижение производительности, чтобы сделать это последним. Это мнение о производительности предполагает, что вы не выполняете десятки тысяч (или более) этих параметров и придерживаетесь веб-стандартизированного допустимого количества символов в вашем URL / URI.
Конечно, есть много разных способов кодирования этого, а также разные методы, чем я описываю, чтобы делать то, что вы хотите. Я просто описываю, что я буду делать. Если у других людей есть другие мнения, я рекомендую вам опубликовать свой собственный ответ, вместо того, чтобы отказываться голосовать или критически комментировать этот ответ.
Поскольку это кажется возможным, это может быть домашнее задание, я не собираюсь кодировать это для ОП. Если это не домашнее задание, я думаю, что они смогут понять это самостоятельно из того, что я уже дал.
Надеюсь, я был полезным и удачи!
Вы не должны изменять магию PHP GLOBALS.
Использование массивов более читабельно, чем строки. Так что попробуйте эту модификацию, которая может соответствовать вашим потребностям.
После того, как вы проанализировали строки запроса в массивах, вы можете объединить и преобразовать их, чтобы получить желаемый результат.
Это будет обрабатывать только простые строки запроса. Если есть вложенные элементы, вам понадобится рекурсивное решение. Но это верно для любого из этих ответов, а также для вашей первоначальной функции.
Удалить параметр URL с помощью PHP
У меня есть некоторые ссылки в презентации powerpoint, и по какой-то причине, когда эти ссылки нажимаются, он добавляет возвращаемый параметр в URL. Ну, этот возвращаемый параметр вызывает сбой шаблона MVC моего сайта Joomla.
Итак, каков эффективный способ удалить этот возвращаемый параметр с помощью PHP.
15 ответов
самый безопасный» правильный » метод будет:
в другом потоке Джастин предполагает, что самый быстрый способ-использовать strtok ()
см. его полный ответ с тестами скорости также здесь:https://stackoverflow.com/a/1251650/452515
это дополнение Марка Бответ с примером, хотя он может выглядеть довольно долго, это безопасный способ удалить параметр. В этом примере мы удаляем page_number
parse_str анализирует строку запроса, http_build_query создает строку запроса.
вы могли бы сделать preg_replace как:
вот фактический код для того, что описано выше как «самый безопасный»правильный » метод».
однако, поскольку это, вероятно, будет существовать до загрузки вашего приложения, вы, вероятно, должны поместить его в анонимную функцию. Вроде этого.
Это один из многих способов, не проверял, но должно работать.
процессуальное оформление марка Б ответ после переработки Сергей Telshevsky это!—3—> ответ.
Вау, здесь много примеров. Я предоставляю тот, который делает некоторую обработку ошибок. Он перестраивает и возвращает весь URL-адрес с помощью строки запроса-param-to-be-removed, removed. Он также предоставляет бонусную функцию, которая строит текущий URL-адрес на лету. Проверено, работает!
вторая строка просто заменит & & to&
@MarcB упомянул, что грязно использовать regex для удаления параметра url. И да, это так, потому что это не так просто, как кажется:
Как вы можете видеть, только @kraftb опубликовал правильный ответ с помощью regex, и моя версия немного меньше.
/ / просто скопируйте приведенный выше код и просто вызовите эту функцию, чтобы получить новый url без определенного параметра
Echo remove_attribute($url, ‘delete_params’); / / дает новый url без этого параметра
это удалит параметр ‘i’из URL-адреса. Измените » я » на все, что вам нужно.
Как убрать GET параметры в адресной строке
Здравствуйте!
Возможно преобразовать ссылку test1.ru/index.php?page=1 в test1.ru/index/page/1/
Скрипт постраничной навигации
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Привожу код полностью, появилась ошибка в 45 строке (Parse error: syntax error, unexpected T_IF)
Получилось
Я правильно понял, что одиночный » / » сразу обращается к каталогу или файлу который в корне, а «../» поднимает на один уровень выше.
Внутренняя ошибка сервера.
Добавлено через 55 минут
Не одна страница не открывается когда этот код прописываю.
Добавлено через 40 минут
Ошибка в коде, где убираем php в строке:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как отключить в хроме поиск в адресной строке?
Поставил Open Server, создал в папке domains папку с именем моего домена, перезапустил сервер, пишу.
Как изначально задать параметр в адресной строке?
Сейчас при загрузке с домашней страницы адрес выглядит вот так: /index.php В коде задано условие.
Как сделать, чтобы в адресной строке не отображалось расширение php?
как сделать чтоб не высвечивалась приставка php? и заходить что б можно было
$_GET разобрать параметры адресной строки
Добрый вечер, мне надо сделать так что бы при клике залоговка открывался полный текст записи я.