|
|
@@ -853,6 +853,75 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
'zm',
|
|
|
'zone',
|
|
|
'zw',
|
|
|
+ '测试',
|
|
|
+ 'परीक्षा',
|
|
|
+ '集团',
|
|
|
+ '在线',
|
|
|
+ '한국',
|
|
|
+ 'ভারত',
|
|
|
+ 'বাংলা',
|
|
|
+ '公益',
|
|
|
+ '公司',
|
|
|
+ '移动',
|
|
|
+ '我爱你',
|
|
|
+ 'испытание',
|
|
|
+ 'қаз',
|
|
|
+ 'онлайн',
|
|
|
+ 'сайт',
|
|
|
+ 'срб',
|
|
|
+ '테스트',
|
|
|
+ '삼성',
|
|
|
+ 'சிங்கப்பூர்',
|
|
|
+ 'дети',
|
|
|
+ 'טעסט',
|
|
|
+ '中文网',
|
|
|
+ '中信',
|
|
|
+ '中国',
|
|
|
+ '中國',
|
|
|
+ 'భారత్',
|
|
|
+ 'ලංකා',
|
|
|
+ '測試',
|
|
|
+ 'ભારત',
|
|
|
+ 'भारत',
|
|
|
+ 'آزمایشی',
|
|
|
+ 'பரிட்சை',
|
|
|
+ '网络',
|
|
|
+ 'укр',
|
|
|
+ '香港',
|
|
|
+ 'δοκιμή',
|
|
|
+ 'إختبار',
|
|
|
+ '台湾',
|
|
|
+ '台灣',
|
|
|
+ 'мон',
|
|
|
+ 'الجزا',
|
|
|
+ 'عمان',
|
|
|
+ 'ایران',
|
|
|
+ 'امارات',
|
|
|
+ 'بازار',
|
|
|
+ 'پاکستا',
|
|
|
+ 'الاردن',
|
|
|
+ 'بھارت',
|
|
|
+ 'المغرب',
|
|
|
+ 'السعودية',
|
|
|
+ 'سودان',
|
|
|
+ 'مليسيا',
|
|
|
+ 'شبكة',
|
|
|
+ 'გე',
|
|
|
+ 'ไทย',
|
|
|
+ 'سورية',
|
|
|
+ 'рф',
|
|
|
+ 'تونس',
|
|
|
+ 'みんな',
|
|
|
+ 'ਭਾਰਤ',
|
|
|
+ '游戏',
|
|
|
+ 'مصر',
|
|
|
+ 'قطر',
|
|
|
+ 'இலங்கை',
|
|
|
+ 'இந்தியா',
|
|
|
+ '新加坡',
|
|
|
+ 'فلسطين',
|
|
|
+ 'テスト',
|
|
|
+ '政务',
|
|
|
);
|
|
|
|
|
|
/**
|
|
|
@@ -935,11 +1004,13 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
3 => '/^[\x{002d}0-9a-zșț]{1,63}$/iu',
|
|
|
4 => '/^[\x{002d}0-9a-zΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ]{1,63}$/iu',
|
|
|
5 => '/^[\x{002d}0-9a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]{1,63}$/iu',
|
|
|
- 6 => '/^[\x{002d}0-9a-zἀ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷῂῃῄῆῇῐ-ΐῖῗῠ-ῧῲῳῴῶῷ]{1,63}$/iu'),
|
|
|
+ 6 => '/^[\x{002d}0-9a-zἀ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ὼώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷῂῃῄῆῇῐ-ῒΐῖῗῠ-ῧῲῳῴῶῷ]{1,63}$/iu'),
|
|
|
'FI' => array(1 => '/^[\x{002d}0-9a-zäåö]{1,63}$/iu'),
|
|
|
'GR' => array(1 => '/^[\x{002d}0-9a-zΆΈΉΊΌΎ-ΡΣ-ώἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼῂῃῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲῳῴῶ-ῼ]{1,63}$/iu'),
|
|
|
'HK' => 'Hostname/Cn.php',
|
|
|
'HU' => array(1 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu'),
|
|
|
+ 'IL' => array(1 => '/^[\x{002d}0-9\x{05D0}-\x{05EA}]{1,63}$/iu',
|
|
|
+ 2 => '/^[\x{002d}0-9a-z]{1,63}$/i'),
|
|
|
'INFO'=> array(1 => '/^[\x{002d}0-9a-zäåæéöøü]{1,63}$/iu',
|
|
|
2 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu',
|
|
|
3 => '/^[\x{002d}0-9a-záæéíðóöúýþ]{1,63}$/iu',
|
|
|
@@ -950,6 +1021,7 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
8 => '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu'),
|
|
|
'IO' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿăąāćĉčċďđĕěėęēğĝġģĥħĭĩįīıĵķĺľļłńňņŋŏőōœĸŕřŗśŝšşťţŧŭůűũųūŵŷźžż]{1,63}$/iu'),
|
|
|
'IS' => array(1 => '/^[\x{002d}0-9a-záéýúíóþæöð]{1,63}$/iu'),
|
|
|
+ 'IT' => array(1 => '/^[\x{002d}0-9a-zàâäèéêëìîïòôöùûüæœçÿß-]{1,63}$/iu'),
|
|
|
'JP' => 'Hostname/Jp.php',
|
|
|
'KR' => array(1 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu'),
|
|
|
'LI' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿœ]{1,63}$/iu'),
|
|
|
@@ -1019,10 +1091,26 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
'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'),
|
|
|
+ 'мон' => array(1 => '/^[\x{002d}0-9\x{0430}-\x{044F}]{1,63}$/iu'),
|
|
|
+ 'срб' => array(1 => '/^[\x{002d}0-9а-ик-шђјљњћџ]{1,63}$/iu'),
|
|
|
+ 'сайт' => array(1 => '/^[\x{002d}0-9а-яёіїѝйўґг]{1,63}$/iu'),
|
|
|
+ 'онлайн' => array(1 => '/^[\x{002d}0-9а-яёіїѝйўґг]{1,63}$/iu'),
|
|
|
'中国' => 'Hostname/Cn.php',
|
|
|
- '公司' => 'Hostname/Cn.php',
|
|
|
- '网络' => 'Hostname/Cn.php'
|
|
|
+ '中國' => 'Hostname/Cn.php',
|
|
|
+ 'ලංකා' => array(1 => '/^[\x{0d80}-\x{0dff}]{1,63}$/iu'),
|
|
|
+ '香港' => 'Hostname/Cn.php',
|
|
|
+ '台湾' => 'Hostname/Cn.php',
|
|
|
+ '台灣' => 'Hostname/Cn.php',
|
|
|
+ 'امارات' => 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'),
|
|
|
+ 'الاردن' => 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'),
|
|
|
+ 'السعودية' => 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'),
|
|
|
+ 'ไทย' => array(1 => '/^[\x{002d}0-9a-z\x{0E01}-\x{0E3A}\x{0E40}-\x{0E4D}\x{0E50}-\x{0E59}]{1,63}$/iu'),
|
|
|
+ 'рф' => array(1 => '/^[\x{002d}0-9а-яё]{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'),
|
|
|
+ 'مصر' => 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'),
|
|
|
+ 'இலங்கை' => array(1 => '/^[\x{0b80}-\x{0bff}]{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'),
|
|
|
+ 'شبكة' => 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'),
|
|
|
);
|
|
|
|
|
|
protected $_idnLength = array(
|
|
|
@@ -1133,7 +1221,7 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
|
|
|
/**
|
|
|
* @param Zend_Validate_Ip $ipValidator OPTIONAL
|
|
|
- * @return void;
|
|
|
+ * @return Zend_Validate_Hostname
|
|
|
*/
|
|
|
public function setIpValidator(Zend_Validate_Ip $ipValidator = null)
|
|
|
{
|
|
|
@@ -1285,10 +1373,8 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
do {
|
|
|
// First check TLD
|
|
|
$matches = array();
|
|
|
- if (preg_match('/([^.]{2,63})$/i', end($domainParts), $matches) ||
|
|
|
- (end($domainParts) == 'ایران') || (end($domainParts) == '中国') ||
|
|
|
- (end($domainParts) == '公司') || (end($domainParts) == '网络')) {
|
|
|
-
|
|
|
+ if (preg_match('/([^.]{2,63})$/iu', end($domainParts), $matches)
|
|
|
+ || (array_key_exists(end($domainParts), $this->_validIdns))) {
|
|
|
reset($domainParts);
|
|
|
|
|
|
// Hostname characters are: *(label dot)(label dot label); max 254 chars
|
|
|
@@ -1297,13 +1383,17 @@ class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
|
|
// ldh: alpha / digit / dash
|
|
|
|
|
|
// Match TLD against known list
|
|
|
- $this->_tld = strtolower($matches[1]);
|
|
|
+ $this->_tld = $matches[1];
|
|
|
if ($this->_options['tld']) {
|
|
|
- if (!in_array($this->_tld, $this->_validTlds)) {
|
|
|
+ if (!in_array(strtolower($this->_tld), $this->_validTlds)
|
|
|
+ && !in_array($this->_tld, $this->_validTlds)) {
|
|
|
$this->_error(self::UNKNOWN_TLD);
|
|
|
$status = false;
|
|
|
break;
|
|
|
}
|
|
|
+ // We have already validated that the TLD is fine. We don't want it to go through the below
|
|
|
+ // checks as new UTF-8 TLDs will incorrectly fail if there is no IDN regex for it.
|
|
|
+ array_pop($domainParts);
|
|
|
}
|
|
|
|
|
|
/**
|