Validação de CPF/CNPJ no WHMCS com uso de string de validação de expressão regular

*Antes de prosseguir, certifique-se de já ter criado o campo personalizado em seu WHMCS.
  1. Faça login em seu WHMCS
  2. Clique em: Opções > Campos Personalizados
  3. Crie os campos p/ CPF/CNPJ(caso eles não existam)
  4. Coloque o código no campo de VALIDAÇÃO - String de Validação de Expressão Regular 

Expressão regular para validar um campo que aceita CPF ou CNPJ (sem cálculo dos dígitos verificadores):

Esse código, inserido no campo correspondente à solicitação de CPF/CNPJ no WHMCS > Campos Personalizados, valida as inserções de números e/ou traços:
/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/


ENTENDA COMO FUNCIONA:

Ela pode ser entendida assim (onde "cpf" é a expressão para validar CPF e "cnpj" é a expressão para validar CNPJ):
/^(cpf|cnpj)$/


As barras inicial e final (/) não fazem parte da expressão propriamente dita - são apenas delimitadores. O caracter ^ no começo e o caracter $ no final exigem que o conteúdo completo do string a ser validado corresponda à expressão entre os mesmos. Os parênteses contendo a barra vertical (a|b)criam uma "opção" alternativa entre "a" e "b". Satisfazendo qualquer uma das duas expressões, o resultado será positivo. No lugar de "a" e "b", temos então as expressões específicas para CPF e CNPJ, separadamente.

Para CPF:


[0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}

A interrogação (?) faz com que a especificação de caractere precedente seja opcional. Portanto os pontos e o tracinho são opcionais. A classe de caracteres [0-9] representa qualquer caracter de 0 a 9 (poderíamos usar \d, mas eu prefiro [0-9] por ser mais legível). Finalmente, o número entre colchetes ({3}) determina uma quantidade específica de vezes que a especificação de caractere precedente deve se repetir. Assim sendo, são requeridos no total 11 caracteres numéricos (3 + 3 + 3 + 2).

Para CNPJ, a estrutura é semelhante:

[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2}

Aqui são requeridos no total 14 caracteres numéricos (2 + 3 + 3 + 4 + 2).

Lembrando que a barra invertida (\) antes do ponto (.) e outros caracteres especiais é um caracter de "escape", que serve para desconsiderar a interpretação especial do caractere seguinte e considerá-lo literalmente. (O ponto, sem "escape", significa "qualquer caractere". Com "escape", significa meramente o caractere "ponto" mesmo.)

Para saber se é CPF ou CNPJ (opcional):

No lado do servidor, em PHP, é feita a seleção entre CPF ou CNPJ considerando o número de dígitos presentes no campo:
$numeros = preg_replace('/[^0-9]/', '', $valor); if (strlen($numeros) == 11) { $cliente->cpf = $valor; } elseif (strlen($numbers) == 14) { $cliente->cnpj = $valor; }


Observação: isso não substitui a validação feita pela expressão regular que vimos acima, a qual também é realizada no lado do servidor (no meu caso as regras estão embutidas no modelo, com as mesmas expressões regulares de validação que vimos acima para CPF e CNPJ, só que separadas - cada qual em seu respectivo campo).

Caso queira validar mais campos, leia a documentação do WHMCS em:https://docs.whmcs.com/Custom_Fields#Regular_Expression_Validation
  • 4 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

Cobrar Valor Pró-Rata no WHMCS

Veja as dicas de como fazer isso em nosso...