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

Kirs

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

Такая штука:
Не люблю когда мне в скрипт пытаются отдать некоректное число, т.е. когда мне вместо 45 пытаются передать 45bnbn, я посылаю ошибку (и на всякий пожарный запоминаю её :) ), а не корректирую число до "45" (все равноже пользователь не ТО хотел сказать этим параметром).
Проверку на число (исходя из моих условий) приходится производить тремя условиями:
1. !empty($int) - проверка на существованиеи и на не соответствие 0 ("0");
2. is_numeric($int) - проверка на соответствие числовому типу данных;
3. $int != 0 - т.к. нулевые значения тоже нахрен не нужны, а empty не посчитает нулевой строку типа "000000".
Так вот, хочется узнать, можнт есть более компактный способ проверки таких данных?
 

Kirs

Fireman
MiRacLe
так я же и говорю - мне не надо преобразовывать "хрен-знает-что" в "возможное" число. Мне надо отсортировать "не числа" и 0 от нормальных чисел наиболее компактным образом.
intval корректирует строку в число, что мне не надо.
 

Фанат

oncle terrible
Команда форума
Kirs, а что ты хотел-то?
ты считаешь, что какая-то из проверок не нужна?
или что проверять не надо?
 

gromitus

Новичок
я считаю что надо функцию написать и все числа поступающие через неё перегонять
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Kirs
если утомляет писать каждый раз такой код - пиши отдельную функцию проверки, мне лично такой способ проверки не кажется таким уж громоздким, чтобы его еще и оптимизировать :)
 

Kirs

Fireman
gromitus
Функция это хорошо... но все равно придется проверять на существование переменной, а только потом на соответсвие типу даных... хрен редьки не слаще :)
c0dex
Если бы функция принимала парметр без проверки его существования (не используя @), типа $y = x_to_y($_GET["x"]); былобы конечно компактнее и красивее... но увы... :(
Фанат
таки ясный перец что все эти проверки нужны... но хотел узнать (на всякий случай) - может что-то есть более для этого случая подходящее... а точнее универсальное.
Вижу что можно успокоится и пользоваться проверенными средствами :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Kirs
Ты конечно прости, но ты что-то глупости пишешь, дружок. просто делается isset вначале функции, если данные есть - там уже смотрим. В этом и суть всей проверки, убедиться что есть данные и что они того вида, что нам подходят. Тебе лень написать функцию, которая тебе потом время сократит многократно, или что?
 

Kirs

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

Kirs

Fireman
Гспода... в Вас преобладает "простое хотение" ответить на вопрос... а не "конструктивное хотение" ответить на тот же самый вопрос, вникая в него самого!
Видать нефиг было его задавать...
Фанат (зараза) как всегда "рулит"...
 

Фанат

oncle terrible
Команда форума
Kirs
с каких это пор на неконструктивные вопросы должны следовать конструктивные ответы?
проверок должно быть ровно столько, сколько их наод.
надо будет 10 прочерок - сделаешь 10
надо будет верхний предел проверить - сделаешь 4 проверку.

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

-~{}~ 14.12.04 21:27:

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

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

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

Если бы функция принимала парметр без проверки
функции не надо принимать ПЕРЕМЕННУЮ.
функция должна принимать СТРОКУ. Строку, которая является ключом глобального массива. плюс - параметры для проверки. на что проверять, какие диапазоны.
 

Kirs

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

Фанат

oncle terrible
Команда форума
Постой.
ты пишешь проверку пользовательского ввода?
не нужны никакие функции.
пишешь все проверки в столбик, и по каждой заполняешь ошибку.

я думал, речь идет о передаваемых в программу параметрах.
 

Renny

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

Фанат

oncle terrible
Команда форума
Renny
и при чем здесь она? как онапоможет автору вопроса?
 

Фанат

oncle terrible
Команда форума
товарища не устраивает то, что ему надо делать три проверки. он хочет меньше.
как твоя функция поможет ему в этом вопросе?
 
Сверху