Skip to content

Instantly share code, notes, and snippets.

@viniciusdaniel
Forked from guisehn/gist:3276015
Last active May 6, 2021 23:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viniciusdaniel/8f0d57dbf1b43615603f07621795f662 to your computer and use it in GitHub Desktop.
Save viniciusdaniel/8f0d57dbf1b43615603f07621795f662 to your computer and use it in GitHub Desktop.
Validar CPF (PHP)
<?php
function validar_cpf($cpf)
{
// Limpa caracteres e mantem apenas dígitos
$cpf = preg_replace('/[^0-9]/', '', (string) $cpf);
// Valida tamanho
if (strlen($cpf) != 11)
return false;
// Verifica se todos os digitos são iguais
if (preg_match('/(\d)\1{10}/', $cpf))
return false;
// Calcula e confere primeiro dígito verificador
for ($i = 0, $j = 10, $soma = 0; $i < 9; $i++, $j--)
$soma += $cpf[$i] * $j;
$resto = $soma % 11;
if ($cpf[9] != ($resto < 2 ? 0 : 11 - $resto))
return false;
// Calcula e confere segundo dígito verificador
for ($i = 0, $j = 11, $soma = 0; $i < 10; $i++, $j--)
$soma += $cpf[$i] * $j;
$resto = $soma % 11;
return $cpf[10] == ($resto < 2 ? 0 : 11 - $resto);
}
var_dump(validar_cpf('111.444.777-35'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment