参看下Zend Framework /**
* Returns value if it is a valid hostname, FALSE otherwise.
* Depending upon the value of $allow, Internet domain names, IP
* addresses, and/or local network names are considered valid.
* The default is HOST_ALLOW_ALL, which considers all of the
* above to be valid.
*
* @param mixed $value
* @param integer $allow bitfield for HOST_ALLOW_DNS, HOST_ALLOW_IP, HOST_ALLOW_LOCAL
* @throws Zend_Filter_Exception
* @return mixed
*/
public static function isHostname($value, $allow = self::HOST_ALLOW_ALL)
{
if (!is_numeric($allow) || !is_int($allow)) {
throw new Zend_Filter_Exception('Illegal value for $allow; expected an integer');
} if ($allow < self::HOST_ALLOW_DNS || self::HOST_ALLOW_ALL < $allow) {
throw new Zend_Filter_Exception('Illegal value for $allow; expected integer between ' .
self::HOST_ALLOW_DNS . ' and ' . self::HOST_ALLOW_ALL);
} // determine whether the input is formed as an IP address
$status = self::isIp($value); // if the input looks like an IP address
if ($status) {
// if IP addresses are not allowed, then fail validation
if (($allow & self::HOST_ALLOW_IP) == 0) {
return FALSE;
} // IP passed validation
return TRUE;
} // check input against domain name schema
$status = @preg_match('/^(?:[^\W_](?:[^\W_]|-){0,61}[^\W_]\.)+[a-zA-Z]{2,6}\.?$/', $value);
if ($status === false) {
throw new Zend_Filter_Exception('Internal error: DNS validation failed');
} // if the input passes as an Internet domain name, and domain names are allowed, then the hostname
// passes validation
if ($status == 1 && ($allow & self::HOST_ALLOW_DNS) != 0) {
return TRUE;
} // if local network names are not allowed, then fail validation
if (($allow & self::HOST_ALLOW_LOCAL) == 0) {
return FALSE;
} // check input against local network name schema; last chance to pass validation
$status = @preg_match('/^(?:[^\W_](?:[^\W_]|-){0,61}[^\W_]\.)*(?:[^\W_](?:[^\W_]|-){0,61}[^\W_])\.?$/',
$value);
if ($status === FALSE) {
throw new Zend_Filter_Exception('Internal error: local network name validation failed');
} if ($status == 0) {
return FALSE;
} else {
return TRUE;
}
}
* Returns value if it is a valid hostname, FALSE otherwise.
* Depending upon the value of $allow, Internet domain names, IP
* addresses, and/or local network names are considered valid.
* The default is HOST_ALLOW_ALL, which considers all of the
* above to be valid.
*
* @param mixed $value
* @param integer $allow bitfield for HOST_ALLOW_DNS, HOST_ALLOW_IP, HOST_ALLOW_LOCAL
* @throws Zend_Filter_Exception
* @return mixed
*/
public static function isHostname($value, $allow = self::HOST_ALLOW_ALL)
{
if (!is_numeric($allow) || !is_int($allow)) {
throw new Zend_Filter_Exception('Illegal value for $allow; expected an integer');
} if ($allow < self::HOST_ALLOW_DNS || self::HOST_ALLOW_ALL < $allow) {
throw new Zend_Filter_Exception('Illegal value for $allow; expected integer between ' .
self::HOST_ALLOW_DNS . ' and ' . self::HOST_ALLOW_ALL);
} // determine whether the input is formed as an IP address
$status = self::isIp($value); // if the input looks like an IP address
if ($status) {
// if IP addresses are not allowed, then fail validation
if (($allow & self::HOST_ALLOW_IP) == 0) {
return FALSE;
} // IP passed validation
return TRUE;
} // check input against domain name schema
$status = @preg_match('/^(?:[^\W_](?:[^\W_]|-){0,61}[^\W_]\.)+[a-zA-Z]{2,6}\.?$/', $value);
if ($status === false) {
throw new Zend_Filter_Exception('Internal error: DNS validation failed');
} // if the input passes as an Internet domain name, and domain names are allowed, then the hostname
// passes validation
if ($status == 1 && ($allow & self::HOST_ALLOW_DNS) != 0) {
return TRUE;
} // if local network names are not allowed, then fail validation
if (($allow & self::HOST_ALLOW_LOCAL) == 0) {
return FALSE;
} // check input against local network name schema; last chance to pass validation
$status = @preg_match('/^(?:[^\W_](?:[^\W_]|-){0,61}[^\W_]\.)*(?:[^\W_](?:[^\W_]|-){0,61}[^\W_])\.?$/',
$value);
if ($status === FALSE) {
throw new Zend_Filter_Exception('Internal error: local network name validation failed');
} if ($status == 0) {
return FALSE;
} else {
return TRUE;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货