Skip to content

Instantly share code, notes, and snippets.

@raisiqueira
Created April 29, 2016 13:46
Show Gist options
  • Select an option

  • Save raisiqueira/eb2a6a42b06527102a81040fe5c61a72 to your computer and use it in GitHub Desktop.

Select an option

Save raisiqueira/eb2a6a42b06527102a81040fe5c61a72 to your computer and use it in GitHub Desktop.
<?php
function digitoVerificador_nossonumero($numero) {
$resto2 = modulo_11($numero, 7, 1);
$digito = 11 - $resto2;
if ($digito == 10) {
$dv = "P"; //digito bradesco caso retorne 1 como resto da divisao
} elseif($digito == 11) {
$dv = 0;
} else {
$dv = $digito;
}
return $dv;
}
function modulo_11($num, $base=9, $r=0) {
/**
* Função:
* Calculo do Modulo 11 para geracao do digito verificador
* de boletos bancarios conforme documentos obtidos
* da Febraban - www.febraban.org.br
*
* Entrada:
* $num: string numérica para a qual se deseja calcularo digito verificador;
* $base: valor maximo de multiplicacao [2-$base]
* $r: quando especificado um devolve somente o resto
*
* Saída:
* Retorna o Digito verificador.
*
* Observações:
* - Script desenvolvido sem nenhum reaproveitamento de código pré existente.
* - Assume-se que a verificação do formato das variáveis de entrada é feita antes da execução deste script.
*/
$soma = 0;
$fator = 2;
/* Separacao dos numeros */
for ($i = strlen($num); $i > 0; $i--) {
// pega cada numero isoladamente
$numeros[$i] = substr($num,$i-1,1);
// Efetua multiplicacao do numero pelo falor
$parcial[$i] = $numeros[$i] * $fator;
// Soma dos digitos
$soma += $parcial[$i];
if ($fator == $base) {
// restaura fator de multiplicacao para 2
$fator = 1;
}
$fator++;
}
/* Calculo do modulo 11 */
if ($r == 0) {
$soma *= 10;
$digito = $soma % 11;
if ($digito == 10) {
$digito = 0;
}
return $digito;
} elseif ($r == 1){
$resto = $soma % 11;
return $resto;
}
}
echo digitoVerificador_nossonumero("00000000033");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment