如何测试一个字符串是否包含一个整数的表示而没有别的?

时间:2016-03-11 10:39:54

标签: php type-conversion

PHP中是否有一个函数将字符串转换为int,但是严重地使用“int”。

转换为int或intval都试图变得聪明并执行其他数学运算,例如舍入。

我有一个解决方案 - 使用int cast,然后将int转换回string。

如果结果相同,则确定,但如果不是,则表示字符串代表其他(例如浮动)。

"2.2" --> 2 --> "2" --> fail
"3" --> 3 --> "3" --> OK

但我想知道PHP中是否有可以使用的东西?

2 个答案:

答案 0 :(得分:1)

您可以使用以下功能:

function StrictIntVal($x)
{
  // If we already have an integer
  if(is_int($x)) return $x;

  // Check we have a string
  if(!is_string($x)) return false;

  // Check the string only contains digits (and optional sign)
  if(!preg_match("/^[\+\-]?\d+$/", $x)) return false;

  return intval($x);
}

答案 1 :(得分:-1)

可能您正在寻找功能is_numeric()

http://php.net/manual/en/function.is-numeric.php

告诉你字符串是否代表数字。