$post
用于模拟$_POST
,我发现$_POST['int']
是一个字符串。
如何判断$post['int']
是否为整数?
以下指示它不是整数。
<?php
$post=array('int'=>(string)123);
var_dump($post);
echo(is_int($post['int'])?'int':'not int');
?>
编辑。根据文件(http://php.net/manual/en/function.is-int.php),is_int — Find whether the type of a variable is integer
,所以很明显,它做的正是它应该做的。仍然需要判断字符串是否是整数。。。
如果您真的想知道值是否是整数,可以使用filter_put()。重要提示:您不能使用伪造的$_POST
var进行测试,您必须发布值或使用INPUT_GET
进行测试,并将?int=344
附加到您的URL
// 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
您可以使用is_numeric
函数,如果var
是integer
或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
}
?>
不要认为这是一个强大的解决方案,但是。。。
<?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';
您必须使用is_numeric()
来自php站点文档
注意:
测试变量是数字还是数字字符串(例如表单输入,它总是一个字符串),则必须使用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
以下代码片段适用于我的
if (is_numeric($_POST['in'])) {
echo "numeric!";
} else {
echo "not numeric";
}