ZF2 Http uri validation

I am trying to check the URI using ZF2. The problem is that I set the value of $ to "http://google.com" or "google / com", it gives me both "bool (false)" outputs.

My code

use Zend\Uri\Http as ValidateUri; use Zend\Uri\Exception as UriException; class Domain { public function domain($value) { return $this->validate($value); } public function validate($value) { if (empty($value) || !is_string($value)) { return false; } try { $uriHttp = ValidateUri::validateHost($value); var_dump($uriHttp); } catch (UriException $e) { return false; } return true; } } 

Thanks in advance! Nick

+4
source share
3 answers

I recommend using the Zend \ Validator \ Hostname validator. Example from the documentation:

 $hostname = 'http://google.com'; $validator = new Zend\Validator\Hostname(Zend\Validator\Hostname::ALLOW_DNS); if ($validator->isValid($hostname)) { // hostname appears to be valid echo 'Hostname appears to be valid'; } else { // hostname is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } } 
+5
source

As of now, your validator will fail because http://google.com is not a valid hostname. However google.com is valid.

What you need: $ hostname = 'google.com';

+4
source

Try:

 public function isValidUrl($url) { $uri = new \Zend\Validator\Uri(); if (!$uri->isValid($url)) { return FALSE; } $parseUrl = parse_url($url); if(!isset($parseUrl['host']) || empty($parseUrl['host'])) { return FALSE; } $validator = new \Zend\Validator\Hostname(\Zend\Validator\Hostname::ALLOW_DNS); if (!$validator->isValid($parseUrl['host'])) { return FALSE; } if (!filter_var($parseUrl['host'], FILTER_VALIDATE_URL) === false) { return FALSE; } return TRUE; } 
+1
source