Shortest way to check if a variable contains positive integer using PHP?

后端 未结 6 1764
野性不改
野性不改 2020-12-08 11:04

I want to check if user input a positive integer number.

1    = true
+10  = true
.1   = false
-1   = false
10.5 = false


Just a positive number. 
No charact         


        
6条回答
  •  余生分开走
    2020-12-08 11:49

    Try the native Filter function*

    filter_var($value, FILTER_VALIDATE_INT, array(
        'options' => array('min_range' => 1)
    ));
    

    * if you just want to make sure the input string consists of an arbitrary length digit sequence, use a regex with [0-9] or [\d+]

    Examples with filter_var:

    var_dump( filter_var(1, FILTER_VALIDATE_INT) ); // int(1)
    
    var_dump( filter_var('1', FILTER_VALIDATE_INT) ); // int(1)
    
    var_dump( filter_var('+10', FILTER_VALIDATE_INT) ); // int(10)
    
    var_dump( filter_var(.1, FILTER_VALIDATE_INT) ); // bool(false)
    
    var_dump( filter_var('.1', FILTER_VALIDATE_INT) ); // bool(false)
    
    var_dump( filter_var(-1, FILTER_VALIDATE_INT, 
        array('options' => array('min_range' => 1))) ); // bool(false)
    
    var_dump( filter_var('-1', FILTER_VALIDATE_INT, 
        array('options' => array('min_range' => 1))) ); // bool(false)
    
    var_dump( filter_var('2147483648', FILTER_VALIDATE_INT) ); // bool(false)
    
    var_dump( filter_var('0xFF', FILTER_VALIDATE_INT) ); // bool(false)
    
    var_dump( filter_var(0xFF, FILTER_VALIDATE_INT) ); // int(255)
    

提交回复
热议问题