diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 0e98596..5fc5c84 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -233,10 +233,16 @@ class Validator * * @param string $field * @param mixed $value + * @param array $params * @return bool */ - protected function validateInteger($field, $value) + protected function validateInteger($field, $value, $params) { + if (isset($params[0]) && (bool) $params[0]){ + //strict mode + return preg_match('/^-?([0-9])+$/i', $value); + } + return filter_var($value, \FILTER_VALIDATE_INT) !== false; } diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index 4a91b33..490424e 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -110,6 +110,31 @@ class ValidateTest extends BaseTestCase $v = new Validator(array('num' => '41243')); $v->rule('integer', 'num'); $this->assertTrue($v->validate()); + + $v = new Validator(array('num' => '-41243')); + $v->rule('integer', 'num'); + $this->assertTrue($v->validate()); + } + + public function testIntegerStrict(){ + + $v = new Validator(array('num' => ' 41243')); + $v->rule('integer', 'num'); + $this->assertTrue($v->validate()); + + $v = new Validator(array('num' => ' 41243')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '+41243')); + $v->rule('integer', 'num'); + $this->assertTrue($v->validate()); + + + $v = new Validator(array('num' => '+41243')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + } public function testIntegerInvalid() @@ -117,6 +142,15 @@ class ValidateTest extends BaseTestCase $v = new Validator(array('num' => '42.341569')); $v->rule('integer', 'num'); $this->assertFalse($v->validate()); + + + $v = new Validator(array('num' => '--1231')); + $v->rule('integer', 'num'); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '0x3a')); + $v->rule('integer', 'num'); + $this->assertFalse($v->validate()); } public function testLengthValid()