fork download
  1. function numeroCNJ($numero)
  2. /**
  3. * Função numeroCNJ, para validar Numeração Única de Processos
  4. * estabelecida na Res. 65 do Conselho Nacional de Justiça, que
  5. * determina a adoção do seguinte formato para números de processos:
  6. * NNNNNNNN-DD.AAAA.JTR.OOOO, onde
  7. * NNNNNNN => Corresponde ao número sequencial do processo no ano do ajuizamento
  8. * DD => Corresponde aos dígitos de verificação
  9. * AAAA => Corresponde ao ano de ajuizamento da ação/processo
  10. * JTR => Corresponde aos números que identificam o Ramo e a Região da Justiça
  11. * OOOO => Corresponde ao número que identifica o juízo a que distribuída a ação
  12. * O cálculo utiliza o algoritmo do Módulo 97 Base 10, conforme especificação da Norma
  13. * ISO 7064:2003
  14. * @param $numero é uma string com o número a ser validado
  15. * @Author Maurício Schmidt Bastos
  16. * a função retorna verdadeiro em caso de sucesso e falso quando o teste falha
  17. * ====================================================================================
  18. * Permitida a cópia para uso NÃO COMERCIAL, mediante referência à fonte (www.mauricio.bastos.nom.br) e ao autor
  19. */
  20. {
  21. //Remove, se houver, os caracteres não numéricos
  22. // da entrada do número do processo
  23. $num = numeroLimpo($0010725-57.2013.503.0093,20);
  24.  
  25. //extrai o dígito verificador do número limpo
  26. $numerosemdigito=substr_replace($num,'',7,2);
  27.  
  28. //Prepara o número para o cálculo do dígito,
  29. //colocando zeros no fim do número sem o dígito
  30. $numparacalculo = $numerosemdigito."00";
  31.  
  32. //Prepara o número para conferência do dígito
  33. //Pega dígito original
  34. $digitooriginal = substr($num,7,2);
  35. //colocando o dígito informado no fim do número s/ dígito
  36. $numparaconferir = $numerosemdigito.$digitooriginal;
  37.  
  38. //divide o $numeroparacalculo para reduzir complexidade do cálculo
  39. $nnnnnnn = substr($numparacalculo,0,7);
  40. $ajtr = substr($numparacalculo,7,-6);
  41. $oooo00 = substr($numparacalculo,14,6);
  42.  
  43. /*Fórmula CNJ primeira etapa
  44. * R1=(NNNNNNN mod 97)
  45. */
  46. $r1 = round($nnnnnnn % 97,2) >= 50 ? round($nnnnnnn % 97,2) : round($nnnnnnn % 97,2,PHP_ROUND_HALF_DOWN);
  47. //garante que $r1 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
  48. $r1 = numeroLimpo(substr($r1,0,2),2);
  49.  
  50. /*Fórmula CNJ segunda etapa
  51. * R2=((R1 concatenado com AAAAJTR) mod 97)
  52. */
  53. //concatena $r1 com AAAAJTR
  54. $r2=($r1.=$ajtr);
  55. $r2 = round($r2 % 97,2) >= 50 ? round($r2 % 97,2) : round($r2 % 97,2,PHP_ROUND_HALF_DOWN);
  56. //garante que $r2 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
  57. $r2 = numeroLimpo(substr($r2,0,2),2);
  58.  
  59. /*Fórmula CNJ terceira etapa
  60. * R3=((R2 concatenado com OOOO00) mod 97)
  61. */
  62. //concatena $r2 com OOOO00
  63. $r3=($r2.=$oooo00);
  64. $r3 = round($r3 % 97,2) >= 50 ? round($r3 % 97,2) : round($r3 % 97,2,PHP_ROUND_HALF_DOWN);
  65. //garante que $r3 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
  66. $r3 = numeroLimpo(substr($r3,0,2),2);
  67.  
  68. /*Fórmula CNJ quarta etapa
  69. * DD = 98 - (R3 mod 97)
  70. */
  71. $d1d0 = 98 - ($r3 % 97);
  72. $d1d0 = numeroLimpo(substr($d1d0,0,2),2);
  73.  
  74. //Compara dígito calculado com informado
  75. $resultado = $digitooriginal==$d1d0 ? TRUE : FALSE;
  76. return $resultado;
  77. }
Success #stdin #stdout 0.02s 25808KB
stdin
Standard input is empty
stdout
function numeroCNJ($numero)
/**
* Função numeroCNJ, para validar Numeração Única de Processos
* estabelecida na Res. 65 do Conselho Nacional de Justiça, que
* determina a adoção do seguinte formato para números de processos:
* NNNNNNNN-DD.AAAA.JTR.OOOO, onde
* NNNNNNN => Corresponde ao número sequencial do processo no ano do ajuizamento
* DD => Corresponde aos dígitos de verificação
* AAAA => Corresponde ao ano de ajuizamento da ação/processo
* JTR => Corresponde aos números que identificam o Ramo e a Região da Justiça
* OOOO => Corresponde ao número que identifica o juízo a que distribuída a ação
* O cálculo utiliza o algoritmo do Módulo 97 Base 10, conforme especificação da Norma
* ISO 7064:2003
* @param $numero é uma string com o número a ser validado
* @Author Maurício Schmidt Bastos
* a função retorna verdadeiro em caso de sucesso e falso quando o teste falha
* ====================================================================================
* Permitida a cópia para uso NÃO COMERCIAL, mediante referência à fonte (www.mauricio.bastos.nom.br) e ao autor
*/
{
//Remove, se houver, os caracteres não numéricos
// da entrada do número do processo
$num = numeroLimpo($0010725-57.2013.503.0093,20);

//extrai o dígito verificador do número limpo
$numerosemdigito=substr_replace($num,'',7,2);

//Prepara o número para o cálculo do dígito,
//colocando zeros no fim do número sem o dígito
$numparacalculo = $numerosemdigito."00";

//Prepara o número para conferência do dígito
//Pega dígito original
$digitooriginal = substr($num,7,2);
//colocando o dígito informado no fim do número s/ dígito
$numparaconferir = $numerosemdigito.$digitooriginal;

//divide o $numeroparacalculo para reduzir complexidade do cálculo
$nnnnnnn = substr($numparacalculo,0,7);
$ajtr = substr($numparacalculo,7,-6);
$oooo00 = substr($numparacalculo,14,6);

/*Fórmula CNJ primeira etapa
* R1=(NNNNNNN mod 97)
*/
$r1 = round($nnnnnnn % 97,2) >= 50 ? round($nnnnnnn % 97,2) : round($nnnnnnn % 97,2,PHP_ROUND_HALF_DOWN);
//garante que $r1 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
$r1 = numeroLimpo(substr($r1,0,2),2);

/*Fórmula CNJ segunda etapa
* R2=((R1 concatenado com AAAAJTR) mod 97)
*/
//concatena $r1 com AAAAJTR
$r2=($r1.=$ajtr);
$r2 = round($r2 % 97,2) >= 50 ? round($r2 % 97,2) : round($r2 % 97,2,PHP_ROUND_HALF_DOWN);
//garante que $r2 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
$r2 = numeroLimpo(substr($r2,0,2),2);

/*Fórmula CNJ terceira etapa
* R3=((R2 concatenado com OOOO00) mod 97)
*/
//concatena $r2 com OOOO00
$r3=($r2.=$oooo00);
$r3 = round($r3 % 97,2) >= 50 ? round($r3 % 97,2) : round($r3 % 97,2,PHP_ROUND_HALF_DOWN);
//garante que $r3 tenha dois dígitos, preenchendo com zero à esquerda, se necessário
$r3 = numeroLimpo(substr($r3,0,2),2);

/*Fórmula CNJ quarta etapa
* DD = 98 - (R3 mod 97)
*/
$d1d0 = 98 - ($r3 % 97);
$d1d0 = numeroLimpo(substr($d1d0,0,2),2);

//Compara dígito calculado com informado
$resultado = $digitooriginal==$d1d0 ? TRUE : FALSE;
return $resultado;
}