Я только что проверил в версии 1.11.9, и никто еще не жаловался; возможно я должен наконец подать отчет об ошибке. Я исправляю / обновляю класс Zend_Validate_Hostname для отсутствующего подчеркивания, как в следующих строках. Это метод isValid()
, в зависимости от вашей версии в строках с 621 (1.11.2) по 655 (1.11.9).
Старые строки:
$regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';
$status = @preg_match($regexLocal, $value);
Новые строки: обратите внимание на изменение x5f
$regexLocal = '/^(([a-zA-Z0-9\x2d\x5f]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';
$status = @preg_match($regexLocal, $value);
UDPATE Уточним это:
Как указывает @Just H в своем ответе, подчеркивания не допускаются, но они все еще широко используются. Давайте возьмем вину это на IBM, а затем на Microsoft с NetBIOS, почему подчеркивания, хотя и не разрешены, «используются» в именах локальных хостов.
Как бывший серверный инженер, я видел много Интранет в крупных компаниях, и все они свободно использовали подчеркивания в именах хостов. Администраторы OS / 2 и Windows по незнанию использовали их в схеме именования DNS. Вот почему все браузеры поддерживают его, все веб-серверы поддерживают.