From b9edac2511cf0bc09e15867e7ec6cea30053a76a Mon Sep 17 00:00:00 2001 From: DenislavParvanov Date: Fri, 14 Sep 2018 11:28:23 +0300 Subject: [PATCH 1/3] Change strlen to mb_strlen --- src/Rules/Between.php | 2 +- src/Rules/Required.php | 2 +- src/Validation.php | 2 +- tests/Rules/BetweenTest.php | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Rules/Between.php b/src/Rules/Between.php index 0905e2d..8bb936b 100644 --- a/src/Rules/Between.php +++ b/src/Rules/Between.php @@ -21,7 +21,7 @@ public function check($value) if (is_int($value)) { return $value >= $min AND $value <= $max; } elseif(is_string($value)) { - return strlen($value) >= $min AND strlen($value) <= $max; + return mb_strlen($value, 'UTF-8') >= $min AND mb_strlen($value, 'UTF-8') <= $max; } elseif(is_array($value)) { return count($value) >= $min AND count($value) <= $max; } else { diff --git a/src/Rules/Required.php b/src/Rules/Required.php index 50b0b68..48aa1e8 100644 --- a/src/Rules/Required.php +++ b/src/Rules/Required.php @@ -20,7 +20,7 @@ public function check($value) return $this->isValueFromUploadedFiles($value) AND $value['error'] != UPLOAD_ERR_NO_FILE; } - if (is_string($value)) return strlen(trim($value)) > 0; + if (is_string($value)) return mb_strlen(trim($value), 'UTF-8') > 0; if (is_array($value)) return count($value) > 0; return !is_null($value); } diff --git a/src/Validation.php b/src/Validation.php index f9e9be0..f4a10f7 100644 --- a/src/Validation.php +++ b/src/Validation.php @@ -162,7 +162,7 @@ protected function initializeAttributeOnData($attributeKey) $asteriskPos = strpos($attributeKey, '*'); - if (false === $asteriskPos || $asteriskPos === (strlen($attributeKey) - 1)) { + if (false === $asteriskPos || $asteriskPos === (mb_strlen($attributeKey, 'UTF-8') - 1)) { return $data; } diff --git a/tests/Rules/BetweenTest.php b/tests/Rules/BetweenTest.php index f624d57..cfd238d 100644 --- a/tests/Rules/BetweenTest.php +++ b/tests/Rules/BetweenTest.php @@ -13,6 +13,7 @@ public function setUp() public function testValids() { $this->assertTrue($this->rule->fillParameters([6, 10])->check('foobar')); + $this->assertTrue($this->rule->fillParameters([6, 10])->check('футбол')); $this->assertTrue($this->rule->fillParameters([2, 3])->check([1,2,3])); $this->assertTrue($this->rule->fillParameters([100, 150])->check(123)); } @@ -20,6 +21,7 @@ public function testValids() public function testInvalids() { $this->assertFalse($this->rule->fillParameters([2, 5])->check('foobar')); + $this->assertTrue($this->rule->fillParameters([2, 5])->check('футбол')); $this->assertFalse($this->rule->fillParameters([4, 6])->check([1,2,3])); $this->assertFalse($this->rule->fillParameters([50, 100])->check(123)); } From a2b6d6cf8eddcbe6c4ac11488257727763999727 Mon Sep 17 00:00:00 2001 From: DenislavParvanov Date: Fri, 14 Sep 2018 12:20:50 +0300 Subject: [PATCH 2/3] fix between-test bug --- tests/Rules/BetweenTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Rules/BetweenTest.php b/tests/Rules/BetweenTest.php index cfd238d..e7dee9b 100644 --- a/tests/Rules/BetweenTest.php +++ b/tests/Rules/BetweenTest.php @@ -21,7 +21,7 @@ public function testValids() public function testInvalids() { $this->assertFalse($this->rule->fillParameters([2, 5])->check('foobar')); - $this->assertTrue($this->rule->fillParameters([2, 5])->check('футбол')); + $this->assertFalse($this->rule->fillParameters([2, 5])->check('футбол')); $this->assertFalse($this->rule->fillParameters([4, 6])->check([1,2,3])); $this->assertFalse($this->rule->fillParameters([50, 100])->check(123)); } From 3928cd5a00f68c6486e7832b759ba9744b4992ff Mon Sep 17 00:00:00 2001 From: DenislavParvanov Date: Fri, 14 Sep 2018 13:51:58 +0300 Subject: [PATCH 3/3] add "require": { "ext-mbstring": "*"} in composer.json --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 31cecd9..c316baa 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ } }, "require": { - "php": ">=5.5.0" + "php": ">=5.5.0", + "ext-mbstring": "*" }, "require-dev": { "phpunit/phpunit": "4.*"