php判断字符串是否为数字的4种方法

判断PHP字符串是否为数字的方法有很多,例如使用ctype_digit()函数、is_int()函数、is_numeric()函数等,本篇文章就来详细介绍下这些方法的使用。

is_numeric()函数

用于检测变量是否为数字或数字字符串。

不管是字符串类型还是小数点,如果是数值(true)会判断。

使用is_numeric()函数进行数字判断

// 按类型存储在变量中
$str = '255'; // 字符串(string)类型
$int = 255; // 整数(int)类型
$flt = 255.99; // 浮点(float)类型
 
// 字符串(string)类型
if (is_numeric($str)) {
  echo '字符串(string)类型 => OK!';
} else {
  echo '字符串(string)类型 => NO!';
}
 
// 整数(int)型
if (is_numeric($int)) {
  echo '整数(int)型 => OK!';
} else {
  echo '整数(int)型 => NO!';
}
 
// 浮点(float)型
if (is_numeric($flt)) {
  echo '浮点(float)型 => OK!';
} else {
  echo '浮点(float)型 => NO!';
}

输出结果:

字符串(string)类型 => OK!
整数(int)型 => OK!
浮点(float)型 => OK!

通过is_numeric()函数判断字符串、整数、浮点都OK!

is_int()函数

用于检测变量是否是整数。

就算是数值,如果是字符串类型也不行!

用is_int()函数检查是否为int类型

// 按类型存储在变量中
$str = '255'; // 字符串(string)类型
$int = 255; // 整数(int)类型
$flt = 255.99; // 浮点(float)类型
 
// 判断字符串(string)类型
if (is_int($str)) {
  echo '字符串(string)类型 => OK!';
} else {
  echo '字符串(string)类型 => NO!';
}
 
// 整数(int)型
if (is_int($int)) {
  echo '整数(int)型 => OK!';
} else {
  echo '整数(int)型 => NO!';
}
 
// 浮点(float)型
if (is_int($flt)) {
  echo '浮点(float)型 => OK!';
} else {
  echo '浮点(float)型 => NO!';
}

输出结果:

字符串(string)类型 => NO!
整数(int)型 => OK!
浮点(float)型 => NO!

从例子中可以看到只有整数是可以的!is_int中不允许使用字符串和浮点(float)型。

从HTML表单提交的数字是字符串类型,因此in_int()不能在此场景使用。

只有在严格判断int类型的时候使用它。

php判断字符串是否为数字的4种方法

preg_match()函数

使用正则表达式检查是否为数字。

// 按类型存储在变量中
$str = '255'; // 字符串(string)类型
$int = 255; // 整数(int)类型
$flt = 255.99; // 浮点(float)类型
 
// 判断字符串(string)类型
if (preg_match('/^[0-9]+$/', $str)) {
  echo '字符串(string)类型 => OK!';
} else {
  echo '字符串(string)类型 => NO!';
}
 
// 整数(int)型
if (preg_match('/^[0-9]+$/', $int)) {
   echo '整数(int)型 => OK!';
} else {
  echo '整数(int)型 => NO!';
}
 
// 浮点(float)型
if (preg_match('/^[0-9]+$/', $slt)) {
  echo '浮点(float)型 => OK!';
} else {
  echo '浮点(float)型 => NO!';
}

输出结果:

字符串(string)类型 => OK!
整数(int)型 => OK!
浮点(float)型 => NO!

preg_match()会根据给定的正则表达式进行匹配,但是不包括小数的数值,无论是string类型还是int类型都会进行判断。

但实际编程中很少有人使用preg_match()函数进行判断,因为很多同学觉得使用正则很麻烦。

ctype_digit()函数

检查字符串里的字符是否是数字,如果字符串中的所有字符都是数字,则返回true,否则为false。

用ctype_digit()函数检查是否是数字

// 按类型存储在变量中
$str = '255'; // 字符串(string)类型
$int = 255; // 整数(int)类型
$flt = 255.99; // 浮点(float)类型
 
// 判断字符串(string)类型
if (ctype_digit($str)) {
  echo '字符串(string)类型 => OK!';
} else {
  echo '字符串(string)类型 => NO!';
}
 
// 整数(int)型
if (ctype_digit($int)) {
  echo '整数(int)型 => OK!';
} else {
  echo '整数(int)型 => NO!';
}
 
// 浮点(float)型
if (ctype_digit($flt)) {
  echo '浮点(float)型 => OK!';
} else {
  echo '浮点(float)型 => NO!';
}

输出结果:

字符串(string)类型 => OK!
整数(int)型 => NO!
浮点(float)型 => NO!

从例子的结果中可以看到,只要是字符串类型的整数就可以了!如果不是字符串,则会返回0/FASLE。

从HTML表单POS过来的值是字符串类型,因此可以使用ctype_digit()函数来验证。

结语

文章中我们详细的讲解了php判断字符串是否为数字的4种方法,每种方法都有自己的特点,下面我们来将它总结在表格中。

函数名字符串(string)类型-("255")整数(int)类型-(255)浮点(float)类型-(255.99)
is_numericok!(true)ok!(true)ok!(true)
is_intno!(false)ok!(true)no!(false)
preg_match(/^[0-9]+$/)ok!(true)ok!(true)no!(false)
ctype_digitok!(true)no!(false)no!(false)

本文来源:词雅网

本文地址:https://www.ciyawang.com/php-95.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐