double — PHP-функция для определения, является ли переменная числом (не шестнадцатеричным или другими цифрами, в которых есть буквы)

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

0

Решение

Там нет встроенной функции, о которой я знаю. Регулярное выражение может поймать это довольно легко, ^\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';
}
2

Другие решения

Пытаться ctype_digit. Это вернет TRUE, если каждый символ в тексте строки является десятичной цифрой, иначе FALSE.

0

Сделайте это самостоятельно следующим образом:

<?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";
}

DEMO

0
По вопросам рекламы [email protected]