Validar IE (Inscrição Estadual)

Alguém tem função para validar a Inscrição Estadual ???

Estou precisando…

Caro Regis:
Achei isso na Net mesmo, caso lhe sirva, bom uso!

http://www.scriptbrasil.com.br/forum/index.php?showtopic=85770

https://groups.google.com/group/php-brasil/msg/0791614a281518a0?hl=pt

Abraços.

Fernando!

http://www.scriptbrasil.com.br/forum/index.php?showtopic=85770
esse aqui eu tinha encontrado… mais não consegui implementar…

o bom é se estivesse todo em php rsrs

mais estou na luta aqui…

http://mateusmachado.wordpress.com/2008/09/08/validacao-de-inscricao-estadual-em-php/

Da uma olhadinha neste, ve se serve para alguma coisa…
Abraços!!!

madxx, obrigado…

Apesar do tempo, vou disponibilizar o código que estou usando no SC, para quem estiver procurando (assim como eu estava):

<?php
// 31/07/2018 - Jônatas Sellos
// adaptado de https://forum.imasters.com.br/topic/322873-resolvido%C2%A0validar-inscri%C3%A7%C3%A3o-estadual-de-todos-os-estados/

function fn_validar_ie($ie, $uf) {
	
	if(strtoupper($ie) == "ISENTO") { 
		return true;
	}
	else {

		$uf = strtoupper($uf);
		$ie = preg_replace("/[^0-9]/", "", $ie);
		
		switch ($uf) {
			//Acre
			case 'AC':
				if (strlen($ie) != 13){return false;}
				else{
					if(substr($ie, 0, 2) != '01'){return false;}
					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 false;}
						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]);
						}
					}
				}
				break;

			// Alagoas
			case 'AL':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != '24'){return false;}
					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]);
					}
				}
				break;

			//Amazonas
			case 'AM':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			//Amapá
			case 'AP':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != '03'){return false;}
					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]);
					}
				}
				break;

			//Bahia
			case 'BA':
				if (strlen($ie) != 8){return false;}
				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 false;}
					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]);
					}
				}
				break;

			//Ceará
			case 'CE':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			// Distrito Federal
			case 'DF':
				if (strlen($ie) != 13){return false;}
				else{
					if( substr($ie, 0, 2) != '07' ){return false;}
					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 false;}
						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]);
						}
					}
				}
				break;

			//Espirito Santo
			case 'ES':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			//Goias
			case 'GO':
				if (strlen($ie) != 9){return false;}
				else{
					$s = substr($ie, 0, 2);

					if( !( ($s == 10) || ($s == 11) || ($s == 15) ) ){return false;}
					else{
						$n = substr($ie, 0, 7);

						if($n == 11094402){
							if($ie[8] != 0){
								if($ie[8] != 1){
									return false;
								}else{return true;}
							}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]);
						}
					}
				}
				break;

			// Maranhão
			case 'MA':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != 12){return false;}
					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]);
					}
				}
				break;

			// Mato Grosso
			case 'MT':
				if (strlen($ie) != 11){return false;}
				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]);
				}
				break;

			// Mato Grosso do Sul
			case 'MS':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != 28){return false;}
					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]);
					}
				}
				break;

			//Minas Gerais
			case 'MG':
				if (strlen($ie) != 13){return false;}
				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 false;}
					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]);
					}
				}
				break;

			//Pará
			case 'PA':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != 15){return false;}
					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]);
					}
				}
				break;

			//Paraíba
			case 'PB':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			//Paraná
			case 'PR':
				if (strlen($ie) != 10){return false;}
				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 false;}
					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]);
					}
				}
				break;

			//Pernambuco
			case 'PE':
				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 false;}
					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 false;
				}
				break;

			//Piauí
			case 'PI':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			// Rio de Janeiro
			case 'RJ':
				if (strlen($ie) != 8){return false;}
				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]);
				}
				break;

			//Rio Grande do Norte
			case 'RN':
				if( !( (strlen($ie) == 9) || (strlen($ie) == 10) ) ){return false;}
				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]);
				}
				break;

			// Rio Grande do Sul
			case 'RS':
				if (strlen($ie) != 10){return false;}
				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]);
				}
				break;

			// Rondônia
			case 'RO':
				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 false;}
				break;

			//Roraima
			case 'RR':
				if (strlen($ie) != 9){return false;}
				else{
					if(substr($ie, 0, 2) != 24){return false;}
					else{
						$b = 1;
						$soma = 0;
						for($i=0;$i<=7;$i++){
							$soma += $ie[$i] * $b;
							$b++;
						}
						$dig = $soma % 9;

						return ($dig == $ie[8]);
					}
				}
				break;

			//Santa Catarina
			case 'SC':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			//São Paulo
			case 'SP':
				if( strtoupper( substr($ie, 0, 1) )  == 'P' ){
					if (strlen($ie) != 13){return false;}
					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 false;}
					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 false;}
						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]);
						}
					}
				}
				break;

			//Sergipe
			case 'SE':
				if (strlen($ie) != 9){return false;}
				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]);
				}
				break;

			//Tocantins
			case 'TO':
				if (strlen($ie) != 11){return false;}
				else{
					$s = substr($ie, 2, 2);
					if( !( ($s=='01') || ($s=='02') || ($s=='03') || ($s=='99') ) ){return false;}
					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]);
					 }
				}
				break;

			default:
				return false;
				break;
		}
	}
}
?>

https://forum.scriptcase.com.br/index.php/topic,11810.0.html

Obrigado