code: private function IPv6Match($address, $subnetAddress, $subnetMask)
      {
          if (!filter_var($subnetAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) || $subnetMask === NULL || $subnetMask === "" || $subnetMask < 0 || $subnetMask > 128) {
              return false;
          }
          $subnet = inet_pton($subnetAddress);
          $addr = inet_pton($address);
  
          $binMask = $this->IPv6MaskToByteArray($subnetMask);
  
          return ($addr & $binMask) == $subnet;
      }
docs: inspired by: http://stackoverflow.com/questions/7951061/matching-ipv6-address-to-a-cidr-subnet