使用正则表达式验证 IPv4 和 IPv6 的 PHP 函数

标签 php regex string validation

我需要为 IPv4 和 v6 创建一个函数,导致我也使用本地 ip。

我所知道的是有效的 IPv4 范围从 0.0.0.0 到 255.255.255.255 我对 IPv6 的了解是有限的,尽管它已经存在了一段时间,但直到今天我还没有真正深入研究它。但我想在未来证明我正在制作的功能,同时暂时保持它有点复古。我不确定 IPv6 的有效范围是多少。

无论如何,总的来说,我在想的是一个函数

function validateIP($ip, $vSix = NULL)
{
    if($vSix !== NULL)
    {
      if(preg_match([regex-to-validate-ipv6], $ip))
      {
        return true;
      }
      else
      {
        return false;
      }
    }

    if(preg_match([regex-to-validate-ipv4], $ip))
    {
      return true;
    }
    else
    {
      return false;
    }
}

我的问题是我对正则表达式很烂,所以我不知道如何编写一个可以验证 v4 或 6 的表达式。此外,对上述函数概念进行健全性检查也会很好。

最佳答案

检查 PHP 的 filter_var功能。它有一个 number of validators ,包括 IPv4 和 IPv6。

$isValid = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
// $isValid can be evaluated as boolean, as it's FALSE if validation fails.

关于使用正则表达式验证 IPv4 和 IPv6 的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608001/

相关文章:

PHP: "Declaration of ... should be compatible with that of ..."

javascript - 测试字符串是否为 html 的最佳方法

javascript - 正则表达式重复搜索而不 chop

php - 如何从两个标签中删除多个子字符串

swift - 在 Swift 中,如何修改带下标的字符串中的字符?

php - 如何防止用户以任何可能的方式获得一些显示的文本?

php - 使用正则表达式为 HTML 类和 ID 添加前缀?

php - 我的表格安全吗?

c# - 正则表达式匹配 4 组中的 2 组

java - 如何将字符串数字格式化为逗号和四舍五入?