Простая задача на php

1 234
dkameleon
На сайте с 09.12.2005
Offline
386
#21
kiowas:
А так же если переменная является массивом или объектом. Нужно еще лепить....

я там написал свой вариант с регулярками, давайте тестируйте и его :)

Дизайн интерьера (http://balabukha.com/)
kiowas
На сайте с 06.02.2010
Offline
61
#22
siv1987:
kiowas, вы уж извините, вы изначально не правильно поставили задачу. Валидация данных по своему критерию и проверка типа данных - это разные вещи.

Согласен, вы разбили задачу на две составляющих, пускай будет так. Может кто-то еще прилепит к этому конъюнкцию, т.е. соединит две проверки. Эт все не так важно.

Важно решить задачу красиво. Есть переменная. Нужно понять, является ли она целым положительным числом или строкой содержащей это число, например '15' или '15486'. Лишних знаков не должно быть.

подпись
O
На сайте с 29.05.2008
Offline
195
#23

function is_positive($num) {
if (isset($num) && (is_int($num) or (is_numeric($num) and floor($num) == $num)) && $num > 0)
return true;
else
return false;
}
kiowas
На сайте с 06.02.2010
Offline
61
#24
dkameleon:
preg_match('#^\d+$#', $num) && $num > 0

Спасибо за интерес 😂

Проходит проверку если:

1. $var = '054';

2. $var = true;

А так же если переменная является объектом или массивом. Нужно еще лепить... :)

---------- Добавлено 07.06.2013 в 20:12 ----------

ortegas:
function is_positive($num) {

if (isset($num) && (is_int($num) or (is_numeric($num) and floor($num) == $num)) && $num > 0)
return true;
else
return false;
}

Срабатывает если:

1. $var = '054';

2. $var = '25.0'

Нужно еще лепить.

S
На сайте с 05.04.2013
Offline
19
#25

удалено как бы

O
На сайте с 29.05.2008
Offline
195
#26


function is_positive($num) {
if (isset($num) && (is_int($num) or ((string)(int)$num === $num)) && $num > 0)
return true;
else
return false;
}
kiowas
На сайте с 06.02.2010
Offline
61
#27
SVatlin:
Правильнее будет так:
if( ! preg_match('/[^0-9]/', $num) OR $num < 1 ) return false;

Нет, тот вариант был правильней, этот вообще далеко. :)

---------- Добавлено 07.06.2013 в 20:19 ----------

ortegas:

function is_positive($num) {
if (isset($num) && (is_int($num) or ((string)(int)$num == $num)) && $num > 0)
return true;
else
return false;
}

Тоже самое :(

Не проходит:

1. $var = '054';

2. $var = 'true';

И еще пару вариантов. Нужно лепить дальше....

O
На сайте с 29.05.2008
Offline
195
#28

kiowas, не правда. Перепроверьте с ===.

siv1987
На сайте с 02.04.2009
Offline
427
#29

if(is_numeric($num) AND $num > 0 AND ! preg_match('/^0|\./', $num)) return true;

return false;

kiowas
На сайте с 06.02.2010
Offline
61
#30
ortegas:
kiowas, не правда. Перепроверьте с ===.

Вы гений, просто божественный программист!!! 🤪 🍻

Красиво, просто. Браво, я аплодирую вам стоя! Сейчас пойду покурю в неположенное место и буду там аплодировать!!!!

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий