[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка на соответствие рег. выражению массива.
userguest
Здравствуйте.
В переменной $_POST передается массив, в нем данные о выбранных флажках на предыдущей странице: <input name="%s" type="checkbox"/>,
пара ключ-значение в данном массиве имеет вид: Array ( [%s] =>on, [%s] =>on ...)
где %s - идентификатор статьи (цифра), которой принадлежит флажок. Т.е. передются только включенный флажки.


Каким образом проверить этот массив на соответствие рег. выражению, например такому - "/[0-90-90-9]/i" (не знаю, правильно ли сделал, но хотел сделать любое трехзначное число)? Перефразирую сказанное. Нужно условие:

if
(
хотя_бы_один_ключ_массива не соответствует рег. выражению (только трехзначное число) && значение_хотя_бы_одного_значения_массива != "on"
)
{
die ("Restricted access.");
;}



Спустя 1 час, 44 минуты, 10 секунд (21.04.2010 - 13:48) userguest написал(а):
Как сделать знаю: foreach + переменная счетчик совпадений.

Как сравнить строку с регулярным выражением, которое указано выше?

Спустя 37 минут, 18 секунд (21.04.2010 - 14:26) moskitos80 написал(а):

$test = array('325','657','33','356','323','556','878','212');

foreach($test as $value)
{
if(!preg_match('/^[0-9]{3}$/',$value))
{
exit('тест не пройден<br>');
}
}

echo 'тест пройден';


Тест выполнится корректно если в массиве будут только 3-х значные числа.

Спустя 31 минута, 34 секунды (21.04.2010 - 14:57) twin написал(а):
Опять регулярки... И чего они, медом намазаны что ли... Почему просто числа не сравнить

if($value < 100 || $value > 999)

ну или длину строки на худой конец:
if(strlen($value) != 3) 

Регулярки не для того нужны, что бы их пихать где ни поподя....

Спустя 27 минут, 30 секунд (21.04.2010 - 15:25) glock18 написал(а):
Цитата (twin @ 21.04.2010 - 11:57)
ну или длину строки на худой конец:

если только на целочисленность еще проверить.

Цитата (twin @ 21.04.2010 - 11:57)
Опять регулярки... И чего они, медом намазаны что ли


и да... вдобавок это можно сделать без цикла.

Спустя 13 минут, 12 секунд (21.04.2010 - 15:38) moskitos80 написал(а):
Ну, человек просил регулярку - написал я ему регулярку...

Спустя 3 часа, 41 минута, 32 секунды (21.04.2010 - 19:20) userguest написал(а):
Может я неправильно выразился, но, тем не менее, мне кажется, что вы неправильно меня поняли, twin... Хотя, скорее всего судя по реакции моя затея - глупость.

Я хотел ограничить данные, которые может принять страница методом POST. Т.к. эта страница удаляет данные из базы. Т.е., насколько я понимаю, если входные данные будут ограничены определенным образом, в данном случае только цифрами, то и навредить никто не сможет. Страница - обработчик все-таки. И может я ошибаюсь, но если какие-либо данные принимаются от пользователя или при его участии и используются, то их лучше и даже нужно ограничить "маской", а в моем случае в коде используются только данные, переданные указанным выше методом. В этой связи "лезут на ум" слова типа инъекция... Создаем страницу, текстовое поле и отправляем странице-обработчику то, что не нужно.

moskitos80, спасибо. (!preg_match('/^[0-9]{3}$/',$value) - то, что нужно. Дальше постараюсь разобраться.

Спустя 6 минут, 28 секунд (21.04.2010 - 19:26) glock18 написал(а):
тебя поняли правильно. регулярка здесь не нужна. что нужно, читай выше.

Спустя 1 час, 14 минут, 7 секунд (21.04.2010 - 20:40) FatCat написал(а):
foreach($array as $k=>$v)$array[$k] = intval($v);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.