瀏覽代碼

Fixes #16 - Zend_Validate_Hostname doesn't handle IDN for .UA

Thanks to @siad007
Frank Brückner 12 年之前
父節點
當前提交
26b8762194
共有 2 個文件被更改,包括 12 次插入0 次删除
  1. 2 0
      library/Zend/Validate/Hostname.php
  2. 10 0
      tests/Zend/Validate/HostnameTest.php

+ 2 - 0
library/Zend/Validate/Hostname.php

@@ -187,6 +187,7 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
      * (.TH) Thailand http://www.iana.org/domains/idn-tables/tables/th_th-th_1.0.html
      * (.TM) Turkmenistan http://www.nic.tm/TM-IDN-Policy.pdf
      * (.TR) Turkey https://www.nic.tr/index.php
+     * (.UA) Ukraine http://www.iana.org/domains/idn-tables/tables/ua_cyrl_1.2.html
      * (.VE) Venice http://www.iana.org/domains/idn-tables/tables/ve_es_1.0.html
      * (.VN) Vietnam http://www.vnnic.vn/english/5-6-300-2-2-04-20071115.htm#1.%20Introduction
      *
@@ -294,6 +295,7 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
         'TM'  => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿāăąćĉċčďđēėęěĝġģĥħīįĵķĺļľŀłńņňŋőœŕŗřśŝşšţťŧūŭůűųŵŷźżž]{1,63}$/iu'),
         'TW'  => 'Zend/Validate/Hostname/Cn.php',
         'TR'  => array(1 => '/^[\x{002d}0-9a-zğıüşöç]{1,63}$/iu'),
+        'UA'  => array(1 => '/^[\x{002d}0-9a-zабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџґӂʼ]{1,63}$/iu'),
         'VE'  => array(1 => '/^[\x{002d}0-9a-záéíóúüñ]{1,63}$/iu'),
         'VN'  => array(1 => '/^[ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚÝàáâãèéêìíòóôõùúýĂăĐđĨĩŨũƠơƯư\x{1EA0}-\x{1EF9}]{1,63}$/iu'),
         'ایران' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'),

+ 10 - 0
tests/Zend/Validate/HostnameTest.php

@@ -476,4 +476,14 @@ class Zend_Validate_HostnameTest extends PHPUnit_Framework_TestCase
         $this->assertFalse($validator->isValid('رات.ca'));
     }
 
+    /**
+     * @group ZF-12413
+     */
+    public function testIDNUA()
+    {
+        $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL);
+
+        $this->assertTrue($validator->isValid('самобраноч.com.ua'));
+        $this->assertTrue($validator->isValid('hostmaster.ua'));
+    }
 }