Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124

Фильтрация данных, переданных через адресную строку

15.11.2013, 22:56. Показов 2228. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
В общем передаю идентификаторы через запятую в адресной строке, например:
mysyte.ru/show/2,5,6,7,10,15,13/

После получения данных, необходимо отфильтровать полученные айди (удалить все кроме запятых и чисел, удалить лишние запятые).

Вот мой почти работающий способ:
PHP
1
2
3
$ids=urldecode($url_ids);
ids = preg_replace('/[^0-9,]/', '', $ids); // удалить все кроме запятых и чисел
$ids = preg_replace('#,+#', ',',$ids); // удалить лишние запятые
Если поставить одну запятую перед первым идентификатором - она не удаляется, и если поставит запятую сразу после последнего айди - она тоже не удаляется. Возможно есть другие, более простые способы фильтровать такие данные? Что скажете?

ПС: очень важно получить отфильтрованные айди именно через запятую, ибо выборка из БД идет с помощью
SQL
1
WHERE id IN
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2013, 22:56
Ответы с готовыми решениями:

Народ как сделать вход на форум через адресную строку браузера???
Народ как сделать вход на форум через адресную строку браузера??? вот форма входа: <meta http-equiv="content-type"...

Поменять адресную строку
Добрый день. У меня такой вопрос: Как можно использовать вид url адреса в виде папок ? тоесть например: e у меня есть файл...

Получить значения переменных, переданных через форму (перенесено из другой темы)
Согласно комплектации Денвера - модуль PHP входит в комплект. Добавлено через 10 минут 23 секунды Извиняюсь за вклинивание в тему,...

9
5 / 5 / 1
Регистрация: 15.11.2013
Сообщений: 99
15.11.2013, 23:07
а не проще использовать парсер implode(разделитель, строка) -вернет массив
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
15.11.2013, 23:46  [ТС]
Цитата Сообщение от snikes Посмотреть сообщение
а не проще использовать парсер implode(разделитель, строка) -вернет массив
Но массив нужно еще и обрабатывать, а без цикла не обойтись. Нужны способы проще
0
5 / 5 / 1
Регистрация: 15.11.2013
Сообщений: 99
16.11.2013, 00:25
Цитата Сообщение от Linnard Посмотреть сообщение
Но массив нужно еще и обрабатывать, а без цикла не обойтись. Нужны способы проще
тогда не пойму зачем вам передавать параметры раздельно, если вы хотите их склеить воедино!

Добавлено через 1 минуту
или все же кадый параметр играет роль и обрабатывать будет отдельно? тогда чем плох массив?
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
16.11.2013, 01:57  [ТС]
Цитата Сообщение от snikes Посмотреть сообщение
тогда не пойму зачем вам передавать параметры раздельно, если вы хотите их склеить воедино!

Добавлено через 1 минуту
или все же кадый параметр играет роль и обрабатывать будет отдельно? тогда чем плох массив?
дело в том, что данные уже передаются склеенными. их можно вставить в sql запрос итак - но тогда сделать sql инъекцию не составит труда. задача в том чтобы максимально просто и быстро отфильтровать полученную строку. Убрать все кроме запятых и чисел, а также убрать лишние запятые.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 02:13
Цитата Сообщение от Linnard Посмотреть сообщение
Но массив нужно еще и обрабатывать, а без цикла не обойтись.
PHP
1
2
3
4
$ids=urldecode($url_ids);
$ids = explode(',', $ids); // удалить все кроме запятых и чисел
$ids = array_filter( $ids, function($val) { return sprintf("%d", $val) == sprintf("%s", $val); });
$ids = join(',', $ids);
Цитата Сообщение от Linnard Посмотреть сообщение
Вот мой почти работающий способ:
PHP
1
2
$ids=urldecode($url_ids);
$ids = preg_replace('/\\A\\D*|\\D+?(?=(?:,\\d)|\\Z)/', '', $ids); // удалить все кроме запятых и чисел
1
16 / 16 / 1
Регистрация: 13.12.2012
Сообщений: 191
18.11.2013, 08:30
Цитата Сообщение от Linnard Посмотреть сообщение
Если поставить одну запятую перед первым идентификатором - она не удаляется, и если поставит запятую сразу после последнего айди - она тоже не удаляется. Возможно есть другие, более простые способы фильтровать такие данные? Что скажете?
Сделай так:

PHP
1
2
3
$ids = urldecode($url_ids);
$ids = preg_replace('/[^0-9,]/', '', $ids); // удалить все кроме запятых и чисел
$ids = trim(preg_replace('/,+/', ',', $ids), ',');
Добавлено через 9 минут
Не мой вариант не катит, не подумал, тебеж нужно и перед первым id удалить запятую. ) Сори, хотел быстро ответить, не подумал.

Добавлено через 4 минуты
Хотя погоди, это у тебя отдельный параметр? Потому что если ты весь URL фильтруешь, то [^0-9,] удалит и это mysyte.ru/show/, а если у тебя это отдельный параметр, то мой вариант подходит идеально. Тобишь если у тебя это 2,5,6,7,10,15,13 в отдельной переменной.
1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
18.11.2013, 08:42
mysyte.ru/show/?ids[]=2&ids[]=5&ids[]=6&ids[]=7&ids[]=10&ids[]=15&ids[]=13
0
16 / 16 / 1
Регистрация: 13.12.2012
Сообщений: 191
18.11.2013, 09:02
Цитата Сообщение от OnYourLips Посмотреть сообщение
mysyte.ru/show/?ids[]=2&ids[]=5&ids[]=6&ids[]=7&ids[]=10&ids[]=15&ids[]=13
Он же сказал что не хочет массив, и это ужас а не запрос )
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
19.11.2013, 09:00
Чем он хуже того, который приведен выше?
Оба имеют одинаковый action, оба не являются ЧПУ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2013, 09:00
Помогаю со студенческими работами здесь

Отправка данных через адресную строку
Я новичок в этом деле и в формах на страницах хтмл мало че понимаю. Обьясните мне простейший пример работы ПХП скрипта. В строку вот этого...

Блокирование данных в поле формы при заполнении через адресную строку
Добрый день. Есть следующая задача: При переходе по ссылке в адресной строке прописываю значение для полей формы. ...

Запретить доступ через адресную строку
Всем привет, как можно запретить доступ через адресную строку ? То есть у меня есть файл index.php в котором идёт проверка на авторизацию,...

Запрет доступа через адресную строку
Для того чтобы нельзя было перейти на страницы используемые для админа на прямую(через адресную строку). Использую: <?php ...

Запрет GET в ручную через адресную строку
При удалении записи из таблицы формируется GET запрос и в адресной строке появляется следующее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru