Você está aqui: PHP ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104 |
Boleto Bancário PHP - Como montar a linha digitável (representação numérica do código de barras) e seu dígito verificador (Módulo 10) - Boleto Caixa EconômicaQuantidade de visualizações: 3315 vezes |
Esta dica fecha nossa série de estudos sobre os boletos bancários da Caixa Econômica (Banco 104). Na dica anterior vimos como montar o código de barras e o seu dígito verificador. E, uma vez montado o código de barras completo, já temos todas as informações para montar sua representação numérica, ou seja, a linha digitável do boleto. Dessa forma, é importante que você entenda bem as funções demonstradas nas dicas anteriores. Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), a linha digitável, ou representação numérica, para a cobrança contém cinco campos, conforme discriminação a seguir: 1º Campo - Composto por: código do banco (posições 1 a 3 do código de barras), código da moeda (posição 4 do código de barras), as cinco primeiras posições do campo livre (posições 20 a 24 do código de barras) e digito verificador deste campo; 2º Campo - Composto pelas posições 6 a 15 do campo livre (posições 25 a 34 do código de barras) e digito verificador deste campo; 3º Campo - Composto pelas posições 16 a 25 do campo livre (posições 35 a 44 do código de barras) e digito verificador deste campo; 4º Campo - Dígito verificador geral do código de barras (posição 5 do código de barras); 5º Campo - Composto pelo "fator de vencimento" (posições 6 a 9 do código de barras) e pelo valor nominal do documento (posições 10 a 19 do código de barras), com a inclusão de zeros entre eles até compor as 14 posições do campo e sem edição (sem ponto e sem vírgula). Não obstante existam 10 posições, o valor nominal do documento não poderá exceder R$ 9.999.999,99. O cálculo que mostrarei a seguir está de acordo com as instruções do Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código apresentado. Dito isso, veja o código PHP completo para uma função que recebe o código de barras completo e retorna a linha digitável, devidamente espaçada e com os pontos, conforme recomendações do manual: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php // função que recebe o código de barras completo // e monta a linha digitável do boleto function montarLinhaDigitavel($codigoBarras){ // vamos nos concentrar no primeiro campo $campo1 = substr($codigoBarras, 0, 3) . substr($codigoBarras, 3, 1) . substr($codigoBarras, 19, 5); // agora o segundo campo $campo2 = substr($codigoBarras, 24, 10); // agora o terceiro campo $campo3 = substr($codigoBarras, 34, 10); // agora o quarto campo $campo4 = substr($codigoBarras, 4, 1); // finalmente o quinto campo $campo5 = substr($codigoBarras, 5, 4) . substr($codigoBarras, 9, 10); $linhaDigitavel = substr($campo1, 0, 5) . "." . substr($campo1, 5, 5) . dvLinhaDigitavel($campo1) . " " . substr($campo2, 0, 5) . "." . substr($campo2, 5, 5) . dvLinhaDigitavel($campo2) . " " . substr($campo3, 0, 5) . "." . substr($campo3, 5, 5) . dvLinhaDigitavel($campo3) . " " . $campo4 . " " . $campo5; return $linhaDigitavel; } // atenção a esta função. Aqui nós usamos o Módulo 10 function dvLinhaDigitavel($valor){ // vamos inverter o valor $valor = strrev($valor); // vamos definir os índices de múltiplicação $indices = "2121212121"; // e aqui a soma da multiplicação coluna por coluna $soma = 0; // fazemos a multiplicação coluna por coluna agora for($i = 0; $i < strlen($valor); $i++){ $res = ((int)($valor[$i])) * ((int)($indices[$i])); // Quando o resultado da multiplicação for um número // com 2 dígitos, somar os 2 algarismos. // Ex: (10: 1+0 = 1). if($res > 9){ // vamos converter o valor númerico em string $res = strval($res); $res = ((int)($res[0]) + (int)($res[1])); } $soma = $soma + $res; } // obtemos o resto da divisão da soma por 10 $resto = $soma % 10; // Se o resto da divisão for 0 (zero), o DV // será 0 (zero). if($resto == 0){ $digito = 0; } // Se o Total da Soma for inferior a 10, o DV corresponde // à diferença entre 10 e o Total da Soma else if($soma < 10){ $digito = 10 - $soma; } else{ // subtraímos onze pelo resto da divisão $digito = 10 - $resto; } return $digito; } // ATENÇÃO: Se você ainda não entende os dados abaixo. // revise as dicas anteriores antes de continuar $banco = "104"; $moeda = "9"; $carteira = "1"; // $emissao = "4"; // cedente $nossoNumero = "222333777777777"; $valor = "321.12"; // sempre duas casas decimais $vencimento = "23/08/2006"; $fator = fatorVencimento($vencimento); $nossoNumeroCompleto = $carteira . $emissao . $nossoNumero; $cedente = "005507"; $dvCedente = dvCodigoCedente($cedente); $campoLivre = montarCampoLivre($cedente, $dvCedente, $nossoNumeroCompleto); $codigoBarras = montarCodigoBarras($banco, $moeda, $fator, $valor, $campoLivre); // agora que temos o código de barras completo, vamos // montar a linha digitável $linhaDigitavel = montarLinhaDigitavel($codigoBarras); // e mostramos o resultado echo "A linha digitável completa é: " . $linhaDigitavel; ?> Ao executar este código PHP nós teremos o seguinte resultado: A linha digitável completa é: 10490.05505 77222.133348 77777.777713 4 32420000032112 Para não deixar o código desta dica muito longo, eu omiti algumas funções, que podem ser facilmente encontradas nas dicas anteriores. |
![]() |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir um diretório usando a função rmdir() do PHPQuantidade de visualizações: 15867 vezes |
Diretórios podem ser excluídos usando-se a função rmdir(). Esta função recebe o nome do diretório a ser excluído e retorna um valor boolean informando o sucesso ou não da operação. Veja que só é possível excluir um diretório se este estiver vazio e se você tiver as permissões necessárias para tal tarefa. Veja um trecho de código no qual excluimos um diretório no diretório public_html: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php // exclui o diretório "imagens" $diretorio = "/site/public_html/imagens"; if(rmdir($diretorio)){ echo "Diretório excluído com sucesso."; } else{ echo "Não foi possível excluir o diretório."; } ?> Ao executar este código PHP nós teremos o seguinte resultado: Diretório excluído com sucesso. Seja cuidadoso. Se você não tiver as permissões adequadas para excluir um diretório, a seguinte mensagem de erro será exibida: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Warning: rmdir(/home/public_html/imagens) [function.rmdir]: Permission denied in /home/public_html/testes.php on line 6 Não foi possível excluir o diretório. |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
PHP para iniciantes - Como substituir substrings considerando maiúsculas e minúsculas usando a função str_replace() do PHPQuantidade de visualizações: 48 vezes |
A função str_replace() da linguagem PHP é muito útil quando precisamos efetuar substituições de substrings em uma string, ou seja, precisamos substituir partes de uma palavra, frase ou texto. No entanto, temos que ficar atentos ao fato de que esta função diferencia letras maiúsculas de minúsculas. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <html> <head> <title>Estudando PHP</title> </head> <body> <?php $frase = "Jsp? Gosto de programar em JSP"; echo "Original: " . $frase; $frase = str_replace("JSP", "PHP", $frase); echo "<br>Depois da substituição: " . $frase; ?> </body> </html> Ao executar este código PHP nós teremos o seguinte resultado: Original: Jsp? Gosto de programar em JSP Depois da substituição: Jsp? Gosto de programar em PHP |
PHP ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em PHP - Como calcular Bhaskara em PHPQuantidade de visualizações: 1092 vezes |
Como resolver uma equação do 2º grau usando PHP Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem PHP. Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita. Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0. Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente. Como resolver uma equação do 2º grau Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns: a) Fórmula de Bhaskara; b) Soma e produto. O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa. Como resolver uma equação do 2º grau usando Bhaskara Como nosso código PHP vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja: \[\Delta =b^2-4ac\] Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades: a) Se determinante > 0, então a equação possui duas soluções reais. b) Se determinante = 0, então a equação possui uma única solução real. c) Se determinante < 0, então a equação não possui solução real. Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara: \[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\] Vamos agora ao código PHP. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php // para executar abra uma janela de comando // cmd e dispare o comando abaixo: // C:\xampp\php>php c:\estudos_php\estudos.php // para ler a entrada do usuário $entrada = fopen("php://stdin","r"); // vamos pedir para o usuário informar os valores dos coeficientes echo "Valor do coeficiente a: "; $a = trim(fgets($entrada)); echo "Valor do coeficiente b: "; $b = trim(fgets($entrada)); echo "Valor do coeficiente c: "; $c = trim(fgets($entrada)); // vamos calcular o discriminante $discriminante = ($b * $b) - (4 * $a * $c); // a equação possui duas soluções reais? if($discriminante > 0){ $raiz1 = (-$b + sqrt($discriminante)) / (2 * $a); $raiz2 = (-$b - sqrt($discriminante)) / (2 * $a); echo "Existem duas raizes: x1 = " . $raiz1 . " e x2 = " . $raiz2; } // a equação possui uma única solução real? else if($discriminante == 0){ $raiz1 = $raiz2 = -$b / (2 * $a); echo "Existem duas raizes iguais: x1 = " . $raiz1 . " e x2 = " . $raiz2; } // a equação não possui solução real? else if($discriminante < 0){ $raiz1 = $raiz2 = -$b / (2 * $a); $imaginaria = sqrt(-$discriminante) / (2 * $a); echo "Existem duas raízes complexas: x1 = " . $raiz1 . " + " . $imaginaria . " e x2 = " . $raiz2 . " - " . $imaginaria; } ?> Ao executar este código PHP nós teremos o seguinte resultado: Valor do coeficiente a: 1 Valor do coeficiente b: 2 Valor do coeficiente c: -3 Existem duas raizes: x1 = 1 e x2 = -3 |
Desafios, Exercícios e Algoritmos Resolvidos de PHP |
Veja mais Dicas e truques de PHP |
Dicas e truques de outras linguagens |
Python - Python para iniciantes - Como inserir uma determinada quantidade de espaços à direita de uma string |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |