Created
February 7, 2018 11:41
-
-
Save mdjekic/ac1f264e37bddfc63be8a042ced52e64 to your computer and use it in GitHub Desktop.
PHP function for validating CIDR notation format (ipv4, ipv6)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Validates the format of a CIDR notation string | |
* | |
* @param string $cidr | |
* @return bool | |
*/ | |
function validateCidr($cidr) | |
{ | |
$parts = explode('/', $cidr); | |
if(count($parts) != 2) { | |
return false; | |
} | |
$ip = $parts[0]; | |
$netmask = intval($parts[1]); | |
if($netmask < 0) { | |
return false; | |
} | |
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { | |
return $netmask <= 32; | |
} | |
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { | |
return $netmask <= 128; | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for the gist, saved me some work today. Improved netmask validation in my fork. Hope you can merge the changes.
The fork invalidates netmasks like:
/
,/22chars
,/17.8.9
.