在PHP中,是否有可能为此语句创建三元运算符?

3
    function integer($str)
    {
        if(preg_match('/[^0-9]/', $str)) 
        { 
           return FALSE;
        }

        else
        {
           return $str;
        }
    }

在PHP中,是否可以为此语句创建三元运算符?

2
如果这不是一个学习练习,我建议使用内置的 is_int 函数:http://php.net/manual/zh/function.is-int.php - Chris Laplante
1
@SimpleCoder 这只检查类型,而不是内容 -- is_int("4") 返回 false。 - lonesomeday
@lonesomeday:谢谢,我是指 is_numeric - Chris Laplante
2个回答

5

是的:

function integer($str) {
  return (preg_match('/[^0-9]/', $str) ? false : $str);
}

$str = "" 应该返回 "" 吗? - salathe
@salathe - 只是回答OP的问题,而不是批评他的代码/流程。 - Rudu

3

你应该使用ctype_digit

function integer($str) {
    return ctype_digit($str) ? $str : false;
}

或者使用 filter_varFILTER_VALIDATE_INT

function integer($str) {
    return filter_var($str, FILTER_VALIDATE_INT, array(
        'options' => array('min_range' => 0),
        'flags' => FILTER_FLAG_ALLOW_OCTAL
    ));
}

filter_var 可以选择性地配置允许最小和最大值,因此您也可以将其限制为仅正整数。 - Gordon
@Gordon:可以只指定“min_range”吗? - NikiC
1
@Gordon,关于八进制,请看FILTER_FLAG_ALLOW_OCTAL标志。 - salathe
@salathe:我认为不允许使用八进制数字是正常的。 - NikiC
@Gordon:与filter_var变体相比,ctype_digit现在看起来多好。 - NikiC
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接