Index: tests/Zend/Validate/HostnameTest.php =================================================================== --- tests/Zend/Validate/HostnameTest.php (revision 23899) +++ tests/Zend/Validate/HostnameTest.php (working copy) @@ -412,4 +412,22 @@ $this->assertFalse($this->_validator->isValid('example.com..')); $this->assertFalse($this->_validator->isValid('1.2.3.4.')); } + + /** + * @group ZF-11334 + * @see http://www.ietf.org/rfc/rfc2732.txt + */ + public function testSupportsIpv6AddressesWhichContainHexDigitF() + { + $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL); + + $this->assertTrue($validator->isValid('FEDC:BA98:7654:3210:FEDC:BA98:7654:3210')); + $this->assertTrue($validator->isValid('1080:0:0:0:8:800:200C:417A')); + $this->assertTrue($validator->isValid('3ffe:2a00:100:7031::1')); + $this->assertTrue($validator->isValid('1080::8:800:200C:417A')); + $this->assertTrue($validator->isValid('::192.9.5.5')); + $this->assertTrue($validator->isValid('::FFFF:129.144.52.38')); + $this->assertTrue($validator->isValid('2010:836B:4179::836B:4179')); + } + } Index: library/Zend/Validate/Hostname.php =================================================================== --- library/Zend/Validate/Hostname.php (revision 23899) +++ library/Zend/Validate/Hostname.php (working copy) @@ -495,6 +495,7 @@ */ public function isValid($value) { + if (!is_string($value)) { $this->_error(self::INVALID); return false; @@ -502,7 +503,8 @@ $this->_setValue($value); // Check input against IP address schema - if (preg_match('/^[0-9.a-e:.]*$/i', $value) && + + if (preg_match('/^[0-9a-f:.]*$/i', $value) && $this->_options['ip']->setTranslator($this->getTranslator())->isValid($value)) { if (!($this->_options['allow'] & self::ALLOW_IP)) { $this->_error(self::IP_ADDRESS_NOT_ALLOWED);