ZF-6133: Zend_Validate_Hostname fails if Punycode is used for IDN


If ACE is used for an IDN like mü (which is Zend_Validate_Hostname fails, because the ACE prefix has a dash in the third and fourth position. At least the IDNA prefix xn-- should be supported, as there are a couple of use-cases, that allow using ACE in RFC 3490.

As exposing the user to raw ACE should be avoided if possible the support for xn-- can be added as an option, which defaults to false.

Reproduce with: <?php require_once 'Zend/Validate/Hostname.php'; $validate = new Zend_Validate_Hostname(); var_dump($validate->isValid('mü')); var_dump($validate->isValid('')); ?>

Result: bool(true) bool(false)

Expected: bool(true) bool(true)


Task can be assigned to me. Some feedback would be nice.

Supporting punycode raises some other issues which have to be solved.

One is coding: It has to be checked if the resulting IDN is supported after punycode has been translated. Second is length: Punycode produces longer strings then IDN which would fail when their length is checked.

I see this not as bug but as improvement as punycode is until now not supported.

New feature implemented with r14556