Попробуйте это с filter_var
Пример:
if(filter_var('127.0.0.1', FILTER_VALIDATE_IP) !== false) {
// is an ip
} else {
// is not an ip
}
Если у вас есть строка типа foo
, 127.0.0.bla
или аналогичный filter_var
вернет false
.Допустимые IP-адреса, такие как 10.1.10.10
, ::1
, считаются действительными.
Уведомление
Также необходимо проверить !== false
, поскольку filter_var
возвращаетзначение, если оно действительно, и false
, если это не так (например, filter_var("::1", FILTER_VALIDATE_IP)
вернет ::1
, не true
).
Флаги
Вы также можете использовать некоторые из следующих флагов:
FILTER_FLAG_IPV4 (фильтр для IPV4)
FILTER_FLAG_IPV6 (фильтр для IPV6)
FILTER_FLAG_NO_PRIV_RANGE (Запретить IP-адреса из частного диапазона)
FILTER_FLAG_NO_RES_RANGE (Запретить IP-адреса из зарезервированного диапазона)
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)
Если $ip
равно 127.0.0.1
функция вернет false
.
Уведомление Неудобно ::1
нормально для FILTER_FLAG_NO_PRIV_RANGE
, но 127.0.0.1
нет.