Last active
December 8, 2016 20:43
-
-
Save pabloprogramador/6331013 to your computer and use it in GitHub Desktop.
validar cpf cnpj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Verifica se o CPF informado é valido | |
* @param string | |
* @return bool | |
*/ | |
function valid_cpf($cpf) | |
{ | |
// Verifiva se o número digitado contém todos os digitos | |
$cpf = str_pad(preg_replace('/[^0-9]/', '', $cpf), 11, '0', STR_PAD_LEFT); | |
// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso | |
if (strlen($cpf) != 11 || | |
$cpf == '00000000000' || | |
$cpf == '11111111111' || | |
$cpf == '22222222222' || | |
$cpf == '33333333333' || | |
$cpf == '44444444444' || | |
$cpf == '55555555555' || | |
$cpf == '66666666666' || | |
$cpf == '77777777777' || | |
$cpf == '88888888888' || | |
$cpf == '99999999999') { | |
return FALSE; | |
} else { | |
// Calcula os números para verificar se o CPF é verdadeiro | |
for ($t = 9; $t < 11; $t++) { | |
for ($d = 0, $c = 0; $c < $t; $c++) { | |
$d += $cpf{$c} * (($t + 1) - $c); | |
} | |
$d = ((10 * $d) % 11) % 10; | |
if ($cpf{$c} != $d) { | |
return FALSE; | |
} | |
} | |
return TRUE; | |
} | |
} | |
// -------------------------------------------------------------------- | |
?> | |
/* End of file form_validation_lang.php */ | |
/* Location: ./system/language/english/form_validation_lang.php */ | |
arquivo de linguagem | |
$lang['valid_cpf'] = "O campo %s não é um CPF válido. Use o formato 000.000.000-00"; | |
Essa função deve ser inserida no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */" | |
<?php | |
/** | |
* Verifica se o CNPJ é valido | |
* @param string | |
* @return bool | |
*/ | |
function valid_cnpj($str) | |
{ | |
if (strlen($str) <> 18) return FALSE; | |
$soma1 = ($str[0] * 5) + | |
($str[1] * 4) + | |
($str[3] * 3) + | |
($str[4] * 2) + | |
($str[5] * 9) + | |
($str[7] * 8) + | |
($str[8] * 7) + | |
($str[9] * 6) + | |
($str[11] * 5) + | |
($str[12] * 4) + | |
($str[13] * 3) + | |
($str[14] * 2); | |
$resto = $soma1 % 11; | |
$digito1 = $resto < 2 ? 0 : 11 - $resto; | |
$soma2 = ($str[0] * 6) + | |
($str[1] * 5) + | |
($str[3] * 4) + | |
($str[4] * 3) + | |
($str[5] * 2) + | |
($str[7] * 9) + | |
($str[8] * 8) + | |
($str[9] * 7) + | |
($str[11] * 6) + | |
($str[12] * 5) + | |
($str[13] * 4) + | |
($str[14] * 3) + | |
($str[16] * 2); | |
$resto = $soma2 % 11; | |
$digito2 = $resto < 2 ? 0 : 11 - $resto; | |
return (($str[16] == $digito1) && ($str[17] == $digito2)); | |
} | |
// -------------------------------------------------------------------- | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment