对多个变量使用!preg_match('/ ^ [0-9] + $ /',$ minCapacity)

时间:2012-03-19 13:09:38

标签: php

更有效地编写以下if语句的最佳方法是什么?

        if (!preg_match('/^[0-9]+$/', $min) || 
            !preg_match('/^[0-9]+$/', $max) ||
            !preg_match('/^[0-9]+$/', $c1) ||
            !preg_match('/^[0-9]+$/', $c2) ||
            !preg_match('/^[0-9]+$/', $c3) ||
            !preg_match('/^[0-9]+$/', $c4) ||
            !preg_match('/^[0-9]+$/', $c5) ||
        )
        {
          echo 'Wrong value"
          exit;
        };

提前致谢!

顺便说一下,我正在验证整数......整数!

3 个答案:

答案 0 :(得分:3)

怎么样:

$tests = array($min, $max, $c1, $c2, $c3, $c4, $c5);

if (count(preg_grep('/^\d+$/', $tests, PREG_GREP_INVERT)) > 0) {
  echo 'Wrong value';
  exit;
}
  • preg_grep() docs
  • 请注意,我已将正则表达式更改为使用\d序列而不是字符类。

答案 1 :(得分:1)

请勿使用正则表达式,只需使用is_numeric http://php.net/manual/en/function.is-numeric.php 或类似的东西

is_int( $myvar + 0 )

答案 2 :(得分:1)

这应该为您提供一个概念性的概念,说明如何以更简洁的方式测试输入变量。

switch(false)
{
    case is_int($min):
    case is_int($max):
    case is_int($c1):
    case is_int($c2):
    case is_int($c3):
    case is_int($c4):
    case is_int($c5):
        echo "Wrong value";
        break;
    default:
        break;
}