Skip to content

Instantly share code, notes, and snippets.

@pabloprogramador
Last active December 8, 2016 20:43
Show Gist options
  • Save pabloprogramador/6331013 to your computer and use it in GitHub Desktop.
Save pabloprogramador/6331013 to your computer and use it in GitHub Desktop.
validar cpf cnpj
<?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