PHP

Validate IP Address (v4 + v6)

admin by @admin ADMIN
3d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Distinguish IPv4 from IPv6, optionally reject private/reserved/loopback ranges. Useful for hardening server-side fetchers against SSRF.
PHP
Raw
<?php
function classifyIp(string $ip): array {
    $public = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
    return [
        'valid'   => (bool)filter_var($ip, FILTER_VALIDATE_IP),
        'v4'      => (bool)filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4),
        'v6'      => (bool)filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6),
        'public'  => (bool)$public,
    ];
}

print_r(classifyIp('8.8.8.8'));           // valid=1 v4=1 public=1
print_r(classifyIp('192.168.1.1'));       // valid=1 v4=1 public=0
print_r(classifyIp('2001:db8::1'));       // valid=1 v6=1 (docs prefix → public=0)
print_r(classifyIp('not-an-ip'));         // valid=0
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.