eXorithm – Execute Algorithm: View / Run Algorithm validate_url

Logo Beta

function validate_url ($url

{

  $regex = '/^(https?|ftp)://'//protocol

  $regex .= '(([a-z0-9$_.+!*'(),;?&=-]|%[0-9a-f]{2})+'//username

  $regex .= '(:([a-z0-9$_.+!*'(),;?&=-]|%[0-9a-f]{2})+)?'//password

  $regex .= '@)?'//auth requires @

  $regex .= '((([a-z0-9][a-z0-9-]*[a-z0-9].)*'//domain segments AND

  $regex .= '[a-z][a-z0-9-]*[a-z0-9]'//top level domain  OR

  $regex .= '|((d|[1-9]d|1d{2}|2[0-4][0-9]|25[0-5]).){3}'

  $regex .= '(d|[1-9]d|1d{2}|2[0-4][0-9]|25[0-5])'//IP address

  $regex .= ')(:d+)?'//port

  $regex .= ')(((/+([a-z0-9$_.+!*'(),;:@&=-]|%[0-9a-f]{2})*)*'//path

  $regex .= '(?([a-z0-9$_.+!*'(),;:@&=-]|%[0-9a-f]{2})*)'//query string

  $regex .= '?)?)?'//path and query string optional

  $regex .= '(#([a-z0-9$_.+!*'(),;:@&=-]|%[0-9a-f]{2})*)?'//fragment

  $regex .= '$/i'

  

  return (preg_match$regex$url) ? true : false);