测试php字符串是否为整数

时间:2015-11-20 23:07:41

标签: php

$post用于模拟$_POST,我发现$_POST['int']是一个字符串。

如何判断$post['int']是否为整数?

以下表示它不是整数。

<?php
  $post=array('int'=>(string)123);
  var_dump($post);
  echo(is_int($post['int'])?'int':'not int');
?>

EDIT。根据文档(http://php.net/manual/en/function.is-int.php),is_int — Find whether the type of a variable is integer,显然它完全符合它的预期。仍需要判断字符串是否为整数...

5 个答案:

答案 0 :(得分:4)

如果您真的想知道该值是否为整数,则可以使用filter_input()。重要提示:您无法使用假$_POST var对此进行测试,您必须发布该值或使用INPUT_GET进行测试并将?int=344附加到您的网址

// INPUT_POST => define that the input is the $_POST var
// 'int' => the index of $_POST you want to validate i.e. $_POST['int']
// FILTER_VALIDATE_INT => is it a valid integer
filter_input( INPUT_POST, 'int', FILTER_VALIDATE_INT );

工作示例:

<form action="" method="post">
    <input type="text" name="int" />
    <input type="submit" />
</form>
<?php
if( isset( $_POST["int"] ) ) {
    echo( filter_input( INPUT_POST, 'int', FILTER_VALIDATE_INT )  ) ? 'int' : 'not int';
}

<强>更新 由于@ user1032531的回答

的评论
  

我原本以为可以使用烘焙解决方案

有一个名为filter_var()的内置函数,该函数与上面的示例相同,但它不需要POST或GET,您只需将值或变量传递给它:

var_dump( filter_var ( 5, FILTER_VALIDATE_INT ) );// 5
var_dump( filter_var ( 5.5, FILTER_VALIDATE_INT ) );// false
var_dump( filter_var ( "5", FILTER_VALIDATE_INT ) );// 5
var_dump( filter_var ( "5a", FILTER_VALIDATE_INT ) );// false

答案 1 :(得分:3)

如果is_numericvarinteger

,您可以使用String Integer函数返回true
<?php
  if(is_numeric($post)){
        //Its a number
    }
  else{
    //Not a number
 }
?>

如果您想知道某个变量是integer而不是string integer,您可以使用

<?php
      if(is_int($post)){
            //Its a number
        }
      else{
        //Not a number
     }
?>

要检查变量是否为float,您可以使用is_float();

<?php
      if(is_numeric($post)){
            //Its a number
            if(is_float($post)){
               //Its a floating point number
            }
        }
      else{
        //Not a number
     }
    ?>

答案 2 :(得分:3)

不要认为这是一个强有力的解决方案,但是......

<?php
function is_string_an_int($v){
    return is_numeric($v)&&(int)$v==$v;
}
echo is_string_an_int(5)?'y':'n';
echo is_string_an_int(5.5)?'y':'n';
echo is_string_an_int('5')?'y':'n';
echo is_string_an_int('5a')?'y':'n';

答案 3 :(得分:0)

您必须使用is_numeric()

来自php site documentation

  

注意:
  测试变量是数字还是数字字符串(例如   表单输入,总是一个字符串),你必须使用is_numeric()。

我个人使用了一段时间:

function isInteger( $nbr ) { 
      if( preg_match( "/^[-]?[0-9]+$/", $nbr ) > 0 ) { 
         return true;
      }   
      return false;
 }

关于正则表达式的解释:

/          begin of the regex  
^          the beginning of the string that you need to verify
[-]?       an optionnal minus sign. No more that one sign.
[0-9]+     at least one digit
$          end of the string that you want to verify
/          end of the regex

答案 4 :(得分:0)

以下鳕鱼片段为我工作

if (is_numeric($_POST['in'])) {
echo "numeric!";
} else {
echo "not numeric";
}