Компактная проверка на "число".

  • Автор темы Автор темы Kirs
  • Дата начала Дата начала

Kirs

Fireman
Компактная проверка на "число".

Такая штука:
Не люблю когда мне в скрипт пытаются отдать некоректное число, т.е. когда мне вместо 45 пытаются передать 45bnbn, я посылаю ошибку (и на всякий пожарный запоминаю её :) ), а не корректирую число до "45" (все равноже пользователь не ТО хотел сказать этим параметром).
Проверку на число (исходя из моих условий) приходится производить тремя условиями:
1. !empty($int) - проверка на существованиеи и на не соответствие 0 ("0");
2. is_numeric($int) - проверка на соответствие числовому типу данных;
3. $int != 0 - т.к. нулевые значения тоже нахрен не нужны, а empty не посчитает нулевой строку типа "000000".
Так вот, хочется узнать, можнт есть более компактный способ проверки таких данных?
 
MiRacLe
так я же и говорю - мне не надо преобразовывать "хрен-знает-что" в "возможное" число. Мне надо отсортировать "не числа" и 0 от нормальных чисел наиболее компактным образом.
intval корректирует строку в число, что мне не надо.
 
Kirs, а что ты хотел-то?
ты считаешь, что какая-то из проверок не нужна?
или что проверять не надо?
 
я считаю что надо функцию написать и все числа поступающие через неё перегонять
 
Kirs
если утомляет писать каждый раз такой код - пиши отдельную функцию проверки, мне лично такой способ проверки не кажется таким уж громоздким, чтобы его еще и оптимизировать :)
 
gromitus
Функция это хорошо... но все равно придется проверять на существование переменной, а только потом на соответсвие типу даных... хрен редьки не слаще :)
c0dex
Если бы функция принимала парметр без проверки его существования (не используя @), типа $y = x_to_y($_GET["x"]); былобы конечно компактнее и красивее... но увы... :(
Фанат
таки ясный перец что все эти проверки нужны... но хотел узнать (на всякий случай) - может что-то есть более для этого случая подходящее... а точнее универсальное.
Вижу что можно успокоится и пользоваться проверенными средствами :)
 
Kirs
Ты конечно прости, но ты что-то глупости пишешь, дружок. просто делается isset вначале функции, если данные есть - там уже смотрим. В этом и суть всей проверки, убедиться что есть данные и что они того вида, что нам подходят. Тебе лень написать функцию, которая тебе потом время сократит многократно, или что?
 
c0dex
Да я же не против своих проверок... просто хрен его знает, может что удобнее (опять же компактнее) есть... вот я не знал о debug_backtrace и делал совершенно лишний код до того (пользовался левой руссифицированоой документацией) как узнать эти возможности.
 
Гспода... в Вас преобладает "простое хотение" ответить на вопрос... а не "конструктивное хотение" ответить на тот же самый вопрос, вникая в него самого!
Видать нефиг было его задавать...
Фанат (зараза) как всегда "рулит"...
 
Kirs
с каких это пор на неконструктивные вопросы должны следовать конструктивные ответы?
проверок должно быть ровно столько, сколько их наод.
надо будет 10 прочерок - сделаешь 10
надо будет верхний предел проверить - сделаешь 4 проверку.

Ты запарился совершенно пустяковыми вещами.
Копнуть твои скрипты - там сотни будут мест, в сотни раз менее оптимальные.
Не занимайся глупостями, пойди, займись делом.

-~{}~ 14.12.04 21:27:

если подумать - проверку на наличие можно не делать.
если к нам пришла форма, значит, все поля в ней есть.если же нету - то это форс-мажор, о чем и будет сообщено программисту нотайсом.

дальше идут совершенно разные проверки. одна - проверка составляющих (можно делать еще регэкспом), а вторая - на диапазон.
ну разные они.
глупо искать что-то общее.
пхп и так пухнет от совершенно немеряного количества функций, которые заменяются строчкой кода.

А хоть бы и было бы - не тем ты занят. Найд что-нибудь более полезное.

Если бы функция принимала парметр без проверки
функции не надо принимать ПЕРЕМЕННУЮ.
функция должна принимать СТРОКУ. Строку, которая является ключом глобального массива. плюс - параметры для проверки. на что проверять, какие диапазоны.
 
Фанат
да, насчет "функций проверки" врубился... просто для меня было коряво видеть такой (примерно) код:
PHP:
$int = user_is_numeric("int", "post") ? $_POST["int"] : die("Ошибка.");
поэтому и избегал использования функций для проверки входящих данных и пытался их проверять "на месте".
Хотя, возвращаясь к моему первоначальному вопросу - проверяю я вирдаь однозначно правильно и безопеляционно :)
 
Постой.
ты пишешь проверку пользовательского ввода?
не нужны никакие функции.
пишешь все проверки в столбик, и по каждой заполняешь ошибку.

я думал, речь идет о передаваемых в программу параметрах.
 
Чем тебе функция
ctype_digit
не приглянулась?
Она выдает true, если ВСЕ символы в строке цифры.
 
Renny
и при чем здесь она? как онапоможет автору вопроса?
 
товарища не устраивает то, что ему надо делать три проверки. он хочет меньше.
как твоя функция поможет ему в этом вопросе?
 
Сверху