Zend_Validate_Hostname allows you to validate a hostname against a set of known specifications. It is possible to check for three different types of hostnames: a DNS Hostname (i.e. domain.com), IP address (i.e. 1.2.3.4), and Local hostnames (i.e. localhost). By default only DNS hostnames are matched.
Basic usage
A basic example of usage is below:
<?php require_once 'Zend/Validate/Hostname.php'; $validator = new Zend_Validate_Hostname(); if ($validator->isValid($hostname)) { // ostname appears to be valid } else { // hostname is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } }
This will match the hostname $hostname
and on failure populate
$validator->getMessages()
with useful error messages.
Validating different types of hostnames
You may find you also want to match IP addresses, Local hostnames, or a combination of all allowed types. This can be done by passing a parameter to Zend_Validate_Hostname when you instantiate it. The paramter should be an integer which determines what types of hostnames are allowed. You are encouraged to use the Zend_Validate_Hostname constants to do this.
The Zend_Validate_Hostname constants are: ALLOW_DNS
to allow only DNS hostnames,
ALLOW_IP
to allow IP addresses, ALLOW_LOCAL
to allow local network
names, and ALLOW_ALL
to allow all three types. To just check for IP addresses
you can use the example below:
<?php require_once 'Zend/Validate/Hostname.php'; $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP); if ($validator->isValid($hostname)) { // ostname appears to be valid } else { // hostname is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } }
As well as using ALLOW_ALL
to accept all hostnames types you can combine
these types to allow for combinations. For example, to accept DNS and Local hostnames
instantiate your Zend_Validate_Hostname object as so:
<?php $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_IP); }