0
function number_check($int){
    if($int>0 && !is_float($int)){return TRUE;}
    else{return FALSE;}
}

$var="025";

if(number_check($var)){echo "pass";}else{echo "fail";}

我有一个功能来检查帖子ID的号码。

post_id应该总是> 0并且没有小数。

但是当用户尝试输入时我遇到了问题000243,如果用户放在zero前面,它会返回true

有什么办法可以解决这个问题吗?

4

4 回答 4

2

试试这个:

<?php
echo intval('000243');
?>
于 2013-09-25T10:21:52.803 回答
1

尝试在不使用引号的情况下为 $var 赋值。即 $var = 000243;

于 2013-09-25T10:22:02.847 回答
1

另一种方法是:

function prepareID($id)
{
    $id = preg_replace('/^([0]*)/', '', $id);

    return (int)$id;
}

$var = prepareID("025");

prepareID 函数将删除所有前导零并返回一个整数

于 2013-09-25T10:26:17.873 回答
1

我认为检查$int{0} != 0将解决您想要实现的目标:

function number_check($int){
    if ( $int > 0 && !is_float($int) && $int{0} != 0 ) {
        return TRUE;
    }
    else {
        return FALSE;
    }
}

$var="023";

if ( number_check($var) ) {
    echo "pass";
} else {
    echo "fail";
}

检查此演示

于 2013-09-25T10:30:38.343 回答