В переменной $_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) - то, что нужно. Дальше постараюсь разобраться.
Я хотел ограничить данные, которые может принять страница методом 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);