unção @PHP para validar IPv4 e IPv6 usando regex

Estou precisando criar uma função para IPv4 e v6 que eu também use ip loca

O que eu sei é um IPv4 válido varia de 0.0.0.0 a 255.255.255.255 O que eu sei sobre o IPv6 é limitado, no entanto, apesar de estar por aí há algum tempo, eu realmente não investi muito nele até agora. Mas quero comprovar futuramente a função que estou criando um pouco, mantendo-a um pouco retro por enquanto. Não sei ao certo quais são os intervalos válidos para o IPv6.

De qualquer maneira Em geral, o que estou pensando é uma função na medida de

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;
    }
}

inha coisa é que eu sou péssima com regex, então não tenho idéia de como escrever uma que valide a v4 ou 6. Também uma verificação de integridade no conceito de função acima também seria lega

questionAnswers(12)

yourAnswerToTheQuestion