Browse Source

Allow utf8mb4 characters in the URL
refs #8368

Anton Nguyen 8 years ago
parent
commit
ccdbbe1f34
2 changed files with 4 additions and 1 deletions
  1. 3 1
      src/Validation/Validation.php
  2. 1 0
      tests/TestCase/Validation/ValidationTest.php

+ 3 - 1
src/Validation/Validation.php

@@ -908,7 +908,9 @@ class Validation
     public static function url($check, $strict = false)
     {
         static::_populateIp();
-        $alpha = '0-9\p{L}\p{N}';
+
+        $emoji = '\x{1F300}-\x{1F6FF}';
+        $alpha = '0-9(\p{L}\p{N}' . $emoji;
         $hex = '(%[0-9a-f]{2})';
         $subDelimiters = preg_quote('/!"$&\'()*+,-.@_:;=~[]', '/');
         $path = '([' . $subDelimiters . $alpha . ']|' . $hex . ')';

+ 1 - 0
tests/TestCase/Validation/ValidationTest.php

@@ -2181,6 +2181,7 @@ class ValidationTest extends TestCase
         $this->assertTrue(Validation::url('http://www.electrohome.ro/images/239537750-284232-215_300[1].jpg'));
         $this->assertTrue(Validation::url('http://www.eräume.foo'));
         $this->assertTrue(Validation::url('http://äüö.eräume.foo'));
+        $this->assertTrue(Validation::url('http://www.domain.com/👹'), 'utf8Extended path failed');
 
         $this->assertTrue(Validation::url('http://cakephp.org:80'));
         $this->assertTrue(Validation::url('http://cakephp.org:443'));