是否有一种简便的方法来检查参数是否存在并且大于零?

时间:2019-05-15 11:12:19

标签: php php-7

我正在尝试检查是否提供了参数并通过了条件,但似乎很冗长。这就是我所拥有的:

   # Place your local configuration in /etc/mosquitto/conf.d/
   #
   # A full description of the configuration file is at
   # /usr/share/doc/mosquitto/examples/mosquitto.conf.example

   pid_file /var/run/mosquitto.pid

   persistence true
   persistence_location /var/lib/mosquitto/

   log_dest file /var/log/mosquitto/mosquitto.log

   include_dir /etc/mosquitto/conf.d

   #password_file /etc/mosquitto/passwd
   #allow_anonymous false



   listener 1884
   protocol websockets

我认为这是安全的,但是在保持安全的前提下,有没有更简洁的方法来实现这一目标?

4 个答案:

答案 0 :(得分:1)

您可以使用preg_match来查看第一个字符是否为[1-9],然后是任意数字。
这将不允许零值或为空或字符串。

您可以添加一个三元组,但是比我无法触及的短。

if(preg_match("/^[1-9]\d*$/", (isset($str) ? $str : 0))){
    // Something
}

答案 1 :(得分:0)

使用filter_inputfilter_var

if (isset($request['limit']) {
    $var = filter_var($request['limit'], FILTER_VALIDATE_INT, ['min_range' => 0]);
    if ($var) {
       $post_params['posts_per_page'] = $var;
    }
}

但是理想情况下,当您生成$ request数组时,您应该这样做。

$request = [
    'limit' => filter_input(INPUT_GET, 'limit', FILTER_VALIDATE_INT, ['min_range' => 0])
];
if ($request['limit']) {
    $post_params['posts_per_page'] = $var;
}

答案 2 :(得分:-1)

您可以使用

if (isset($request['limit']) and intval($request['limit']) > 0) {
    $post_params['posts_per_page'] = (int)$request['limit'];
}

答案 3 :(得分:-2)

不确定您是否认为这是一个单手演奏...

$correct = @(preg_match('/^[1-9]\d*$/', $request['limit']));

“ @”将禁止此句子中的任何警告,但是您可以得到的唯一警告是未定义变量,因此该变量是受控的。