Каков наилучший способ проверить, является ли ввод числовым?
Эти номера не должны быть действительными. Только цифры: 123, 012 (12), положительные числа должны быть действительными. Это текущий текущий код:
$num = (int) $val; if ( preg_match('/^\d+$/', $num) && strval(intval($num)) == strval($num) ) { return true; } else { return false; }
ctype_digit
был построен именно для этой цели.
я использую
if(is_numeric($value) && $value > 0 && $value == round($value, 0)){
для проверки, является ли значение числовым, положительным и интегральным
Мне не нравится ctype_digit, поскольку он не читается как «is_numeric» и на самом деле имеет меньше недостатков, когда вы действительно хотите проверить, что значение является числовым.
filter_var()
$options = array( 'options' => array('min_range' => 0) ); if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) { // you're good }
return ctype_digit($num) && (int) $num > 0
Для PHP версии 4 или более поздней версии:
<?PHP $input = 4; if(is_numeric($input)){ // return **TRUE** if it is numeric echo "The input is numeric"; }else{ echo "The input is not numeric"; } ?>