есть ли функция PHP, кроме is_numeric это определяет, является ли переменная числом (не шестнадцатеричным). Потому что мне нужно проверить, является ли переменная числом / десятичным числом, без шестнадцатеричного или другого типа чисел, в которых есть буквы.
Там нет встроенной функции, о которой я знаю. Регулярное выражение может поймать это довольно легко, ^\d+(\.\d*)?$
(будет соответствовать ‘0,123’, но не ‘.123’).
Но вот еще одна альтернативная стратегия.
<?php
function isDigit($var) {
return ((string)$var == (float)$var);
}
var_export(isDigit('123.3')); // true
var_export(isDigit('-321')); // true
var_export(isDigit('0xFFF')); // false
ОБНОВИТЬ:
Я только что вспомнил filter_var()
, который, я думаю, предлагает лучшее решение.
<?php
if (filter_var($var, FILTER_VALIDATE_FLOAT) !== false) {
echo 'is float';
} else {
echo 'is not float';
}
Пытаться ctype_digit
. Это вернет TRUE, если каждый символ в тексте строки является десятичной цифрой, иначе FALSE.
Сделайте это самостоятельно следующим образом:
<?php
function is_number($n = null){
if (is_null($n)){
return false;
}
if (is_int($n)){
return true;
}
$n = $n.'';
$decimal = explode('.',$n);
if (is_int($decimal[0]*1) && is_int($decimal[1]*1)){
return true;
}
return false;
}
if (is_number(1.2)){
echo "yes";
}
else{
echo "no";
}