Как проверить только цифры (включая отрицательные)? - PullRequest
0 голосов
/ 16 февраля 2012

как я могу проверять числа только от минус 10 до +10?:

Input a number between -10 and 10: <input type="text" name="number" size="5" />

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012
if( isset($_POST['number'])) {
    $num = intval($_POST['number']);
    if( $num >= -10 && $num <= 10) {
        // do something
    }
}

Есть и другие способы, но этот будет работать. Все, что не может быть преобразовано в число, будет рассматриваться как ноль. Если это нежелательное поведение, добавьте:

&& "".$num == $_POST['number']

Для этого внутреннего оператора IF, чтобы убедиться, что не числовые символы не были удалены из ввода.

1 голос
/ 30 ноября 2015

Проверьте, является ли переменная числом, включающим ноль и отрицательные значения

$x = '-22';
if (isNumber($x, ['zero','negative']))
    echo 'Yes';
else
    echo 'No';

isNumber($x, $includes=[])
{       
    if (is_int($x)) {
        if ($x === 0) {
            if (in_array('zero', $includes))
                return true;
        } elseif ($x < 0) {
            if (in_array('negative', $includes))
                return true;
        } else
            return true;
    } elseif (is_string($x)) {
        if ($x == '0') {
            if (in_array('zero', $includes))
                return true;
        } elseif ($x[0] == '-') {
            if (in_array('negative', $includes))
                return ctype_digit(substr($x, 1));
        } else
            return ctype_digit($x);
    }
}
...