PHP 确定变量是否为数字的函数(不是十六进制或其他包含字母的数字)
PHP function to determine if a variable is a number(not hex or other numericals that have letters in them)
是否有 php 函数而不是 is_numeric 来确定变量是否为数字(非十六进制)。因为我需要验证一个变量是否是 number/decimal,没有十六进制或其他类型的包含字母的数字。
尝试ctype_digit
。如果字符串文本中的每个字符都是十进制数字,这将 returns 为 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";
}
据我所知没有内置功能。正则表达式可以很容易地捕获它,^\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';
}
是否有 php 函数而不是 is_numeric 来确定变量是否为数字(非十六进制)。因为我需要验证一个变量是否是 number/decimal,没有十六进制或其他类型的包含字母的数字。
尝试ctype_digit
。如果字符串文本中的每个字符都是十进制数字,这将 returns 为 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";
}
据我所知没有内置功能。正则表达式可以很容易地捕获它,^\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';
}