Metal Raziel 0 Denunciar post Postado Dezembro 22, 2008 Depois de algumas horas procurando no google por alguma função q validasse os numeros de ie, a unica q axei foi essa do mestre fyoda mas ela foi feita em javascript e eu precisava de uma em php, então acabei adaptando as funções q ele fez e tb usei como base os calculos do site do sintegra No total são 28 funções, sendo uma para cada um dos 27 estados e mais uma para chamar a função correspondente de acordo com o estado. Nos testes que eu fis, todas funcionaram corretamente, mas se alguem encontrar qualquer erro, por favor me informe pra q eu possa corrigir. <? //Acre function CheckIEAC($ie){ if (strlen($ie) != 13){return 0;} else{ if(substr($ie, 0, 2) != '01'){return 0;} else{ $b = 4; $soma = 0; for ($i=0;$i<=10;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = 0;} if( !($dig == $ie[11]) ){return 0;} else{ $b = 5; $soma = 0; for($i=0;$i<=11;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = 0;} return ($dig == $ie[12]); } } } } // Alagoas function CheckIEAL($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != '24'){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $soma *= 10; $dig = $soma - ( ( (int)($soma / 11) ) * 11 ); if($dig == 10){$dig = 0;} return ($dig == $ie[8]); } } } //Amazonas function CheckIEAM($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } if($soma <= 11){$dig = 11 - $soma;} else{ $r = $soma % 11; if($r <= 1){$dig = 0;} else{$dig = 11 - $r;} } return ($dig == $ie[8]); } } //Amapá function CheckIEAP($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != '03'){return 0;} else{ $i = substr($ie, 0, -1); if( ($i >= 3000001) && ($i <= 3017000) ){$p = 5; $d = 0;} elseif( ($i >= 3017001) && ($i <= 3019022) ){$p = 9; $d = 1;} elseif ($i >= 3019023){$p = 0; $d = 0;} $b = 9; $soma = $p; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $dig = 11 - ($soma % 11); if($dig == 10){$dig = 0;} elseif($dig == 11){$dig = $d;} return ($dig == $ie[8]); } } } //Bahia function CheckIEBA($ie){ if (strlen($ie) != 8){return 0;} else{ $arr1 = array('0','1','2','3','4','5','8'); $arr2 = array('6','7','9'); $i = substr($ie, 0, 1); if(in_array($i, $arr1)){$modulo = 10;} elseif(in_array($i, $arr2)){$modulo = 11;} $b = 7; $soma = 0; for($i=0;$i<=5;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % $modulo; if ($modulo == 10){ if ($i == 0) { $dig = 0; } else { $dig = $modulo - $i; } }else{ if ($i <= 1) { $dig = 0; } else { $dig = $modulo - $i; } } if( !($dig == $ie[7]) ){return 0;} else{ $b = 8; $soma = 0; for($i=0;$i<=5;$i++){ $soma += $ie[$i] * $b; $b--; } $soma += $ie[7] * 2; $i = $soma % $modulo; if ($modulo == 10){ if ($i == 0) { $dig = 0; } else { $dig = $modulo - $i; } }else{ if ($i <= 1) { $dig = 0; } else { $dig = $modulo - $i; } } return ($dig == $ie[6]); } } } //Ceará function CheckIECE($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $dig = 11 - ($soma % 11); if ($dig >= 10){$dig = 0;} return ($dig == $ie[8]); } } // Distrito Federal function CheckIEDF($ie){ if (strlen($ie) != 13){return 0;} else{ if( substr($ie, 0, 2) != '07' ){return 0;} else{ $b = 4; $soma = 0; for ($i=0;$i<=10;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = 0;} if( !($dig == $ie[11]) ){return 0;} else{ $b = 5; $soma = 0; for($i=0;$i<=11;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = 0;} return ($dig == $ie[12]); } } } } //Espirito Santo function CheckIEES($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i < 2){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[8]); } } //Goias function CheckIEGO($ie){ if (strlen($ie) != 9){return 0;} else{ $s = substr($ie, 0, 2); if( !( ($s == 10) || ($s == 11) || ($s == 15) ) ){return 0;} else{ $n = substr($ie, 0, 7); if($n == 11094402){ if($ie[8] != 0){ if($ie[8] != 1){ return 0; }else{return 1;} }else{return 1;} }else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i == 0){$dig = 0;} else{ if($i == 1){ if(($n >= 10103105) && ($n <= 10119997)){$dig = 1;} else{$dig = 0;} }else{$dig = 11 - $i;} } return ($dig == $ie[8]); } } } } // Maranhão function CheckIEMA($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != 12){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[8]); } } } // Mato Grosso function CheckIEMT($ie){ if (strlen($ie) != 11){return 0;} else{ $b = 3; $soma = 0; for($i=0;$i<=9;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[10]); } } // Mato Grosso do Sul function CheckIEMS($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != 28){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i == 0){$dig = 0;} else{$dig = 11 - $i;} if($dig > 9){$dig = 0;} return ($dig == $ie[8]); } } } //Minas Gerais function CheckIEMG($ie){ if (strlen($ie) != 13){return 0;} else{ $ie2 = substr($ie, 0, 3) . '0' . substr($ie, 3); $b = 1; $soma = ""; for($i=0;$i<=11;$i++){ $soma .= $ie2[$i] * $b; $b++; if($b == 3){$b = 1;} } $s = 0; for($i=0;$i<strlen($soma);$i++){ $s += $soma[$i]; } $i = substr($ie2, 9, 2); $dig = $i - $s; if($dig != $ie[11]){return 0;} else{ $b = 3; $soma = 0; for($i=0;$i<=11;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 11;} } $i = $soma % 11; if($i < 2){$dig = 0;} else{$dig = 11 - $i;}; return ($dig == $ie[12]); } } } //Pará function CheckIEPA($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != 15){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[8]); } } } //Paraíba function CheckIEPB($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} if($dig > 9){$dig = 0;} return ($dig == $ie[8]); } } //Paraná function CheckIEPR($ie){ if (strlen($ie) != 10){return 0;} else{ $b = 3; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 7;} } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} if ( !($dig == $ie[8]) ){return 0;} else{ $b = 4; $soma = 0; for($i=0;$i<=8;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 7;} } $i = $soma % 11; if($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[9]); } } } //Pernambuco function CheckIEPE($ie){ if (strlen($ie) == 9){ $b = 8; $soma = 0; for($i=0;$i<=6;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} if ( !($dig == $ie[7]) ){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[8]); } } elseif(strlen($ie) == 14){ $b = 5; $soma = 0; for($i=0;$i<=12;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 0){$b = 9;} } $dig = 11 - ($soma % 11); if($dig > 9){$dig = $dig - 10;} return ($dig == $ie[13]); } else{return 0;} } //Piauí function CheckIEPI($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $i = $soma % 11; if($i <= 1){$dig = 0;} else{$dig = 11 - $i;} if($dig >= 10){$dig = 0;} return ($dig == $ie[8]); } } // Rio de Janeiro function CheckIERJ($ie){ if (strlen($ie) != 8){return 0;} else{ $b = 2; $soma = 0; for($i=0;$i<=6;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 7;} } $i = $soma % 11; if ($i <= 1){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[7]); } } //Rio Grande do Norte function CheckIERN($ie){ if( !( (strlen($ie) == 9) || (strlen($ie) == 10) ) ){return 0;} else{ $b = strlen($ie); if($b == 9){$s = 7;} else{$s = 8;} $soma = 0; for($i=0;$i<=$s;$i++){ $soma += $ie[$i] * $b; $b--; } $soma *= 10; $dig = $soma % 11; if($dig == 10){$dig = 0;} $s += 1; return ($dig == $ie[$s]); } } // Rio Grande do Sul function CheckIERS($ie){ if (strlen($ie) != 10){return 0;} else{ $b = 2; $soma = 0; for($i=0;$i<=8;$i++){ $soma += $ie[$i] * $b; $b--; if ($b == 1){$b = 9;} } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = 0;} return ($dig == $ie[9]); } } // Rondônia function CheckIERO($ie){ if (strlen($ie) == 9){ $b=6; $soma =0; for($i=3;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $dig = 11 - ($soma % 11); if($dig >= 10){$dig = $dig - 10;} return ($dig == $ie[8]); } elseif(strlen($ie) == 14){ $b=6; $soma=0; for($i=0;$i<=12;$i++) { $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 9;} } $dig = 11 - ( $soma % 11); if ($dig > 9){$dig = $dig - 10;} return ($dig == $ie[13]); } else{return 0;} } //Roraima function CheckIERR($ie){ if (strlen($ie) != 9){return 0;} else{ if(substr($ie, 0, 2) != 24){return 0;} else{ $b = 1; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b++; } $dig = $soma % 9; return ($dig == $ie[8]); } } } //Santa Catarina function CheckIESC($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $dig = 11 - ($soma % 11); if ($dig <= 1){$dig = 0;} return ($dig == $ie[8]); } } //São Paulo function CheckIESP($ie){ if( strtoupper( substr($ie, 0, 1) ) == 'P' ){ if (strlen($ie) != 13){return 0;} else{ $b = 1; $soma = 0; for($i=1;$i<=8;$i++){ $soma += $ie[$i] * $b; $b++; if($b == 2){$b = 3;} if($b == 9){$b = 10;} } $dig = $soma % 11; return ($dig == $ie[9]); } }else{ if (strlen($ie) != 12){return 0;} else{ $b = 1; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b++; if($b == 2){$b = 3;} if($b == 9){$b = 10;} } $dig = $soma % 11; if($dig > 9){$dig = 0;} if($dig != $ie[8]){return 0;} else{ $b = 3; $soma = 0; for($i=0;$i<=10;$i++){ $soma += $ie[$i] * $b; $b--; if($b == 1){$b = 10;} } $dig = $soma % 11; return ($dig == $ie[11]); } } } } //Sergipe function CheckIESE($ie){ if (strlen($ie) != 9){return 0;} else{ $b = 9; $soma = 0; for($i=0;$i<=7;$i++){ $soma += $ie[$i] * $b; $b--; } $dig = 11 - ($soma % 11); if ($dig > 9){$dig = 0;} return ($dig == $ie[8]); } } //Tocantins function CheckIETO($ie){ if (strlen($ie) != 11){return 0;} else{ $s = substr($ie, 2, 2); if( !( ($s=='01') || ($s=='02') || ($s=='03') || ($s=='99') ) ){return 0;} else{ $b=9; $soma=0; for($i=0;$i<=9;$i++){ if( !(($i == 2) || ($i == 3)) ){ $soma += $ie[$i] * $b; $b--; } } $i = $soma % 11; if($i < 2){$dig = 0;} else{$dig = 11 - $i;} return ($dig == $ie[10]); } } } function CheckIE($ie, $uf){ if( strtoupper($ie) == 'ISENTO' ){return 1;} else{ $uf = strtoupper($uf); $ie = ereg_replace("[()-./,:]", "", $ie); $comando = '$valida = CheckIE'.$uf.'("'.$ie.'");'; eval($comando); return $valida; } } //números para testes //01.004.823/001-12 AC //240000048 AL //030123459 AP //999999990 AM //123456-63 BA //06000001-5 CE //073.00001.001-09 DF //999999990 ES //10.987.654-7 GO //120000385 MA //0013000001-9 MT //283115947 MS //062.307.904/0081 MG //15-999999-5 PA //06000001-5 PB //123.45678-50 PR //0321418-40 PE //18.1.001.0000004-9 PE //012345679 PI //99999993 RJ //20.040.040-1 RN //20.0.040.040-0 RN //224/3658792 RS //101.62521-3 RO //0000000062521-3 RO //24006628-1 RR //251.040.852 SC //110.042.490.114 SP //27123456-3 SE //29010227836 TO ?> Compartilhar este post Link para o post Compartilhar em outros sites
gabrielfalieri 15 Denunciar post Postado Agosto 30, 2016 Top cara Compartilhar este post Link para o post Compartilhar em outros sites
Kaaa 0 Denunciar post Postado Setembro 11, 2019 Olá, Excelentes funções... Obrigada por compartilhar. Mas tenho uma dúvida: >> Quando digito uma Inscrição Estadual válida para o MT, não funciona. E está ficando a máscara da seguinte forma: 00.000.000-0 Limitando o número de caracteres digitados. Precisei mudar um pouquinho a função InscricaoEstadual() public function InscricaoEstadual($ie, $uf){ if (strtoupper($ie) == 'ISENTO') { return 1; } else { $uf = strtoupper($uf); $ie = preg_replace('/\D/', '', $ie); $valida = 'CheckIE' . $uf; return $this->$valida($ie); } } Desde já, muito obrigada! Compartilhar este post Link para o post Compartilhar em outros sites