Você está na página 1de 8

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

Rafael Clares
Stay updated via RSS

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa


Publicado: novembro 12, 2010 em PHP 27 About Opa! these ads (

Escrevi uma funo para aplicar mscara em campos/valores como cpf, cnpj, data, hora, coordenadas estelares e o que desejar. bem simples, estou sem sono e resolvi escrever algo, eu gosto de escrever aqui huahuha. Quer ver o script e eu aqui com papo de sonmbulo ento t!
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <? function mask($val, $mask) { $maskared = ''; $k = 0; for($i = 0; $i<=strlen($mask)-1; $i++) { if($mask[$i] == '#') { if(isset($val[$k])) $maskared .= $val[$k++]; } else { if(isset($mask[$i])) $maskared .= $mask[$i]; } } return $maskared; } ?>

Exemplo de uso:
01 02 03 04 05 06 07 08 09 10 11 <? $cnpj = "11222333000199"; $cpf = "00100200300"; $cep = "08665110"; $data = "10102010"; echo echo echo echo mask($cnpj,'##.###.###/####-##'); mask($cpf,'###.###.###-##'); mask($cep,'#####-###'); mask($data,'##/##/####');

1 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

12 13

?>

Sadas: 11.222.333/0001-99 001.002.003-00 08665-110 10/10/2010 A sada exatamente como voc denir com os #, voc pode utilizar qualquer separador, qualquer caracter, ex:
1 2 3 4 5 6 7 8 9 <? $data = "10102010"; echo mask($data,'##/##/####'); echo mask($data,'[##][##][####]'); echo mask($data,'(##)(##)(####)'); ?>

Sadas: 10/10/2010 [10][10][2010] (10)(10)(2010) Exemplo esquisito que ningum jamais utilizar:
1 2 3 4 5 6 7 8 <? $hora = "021050"; echo mask($hora,'Agora so ## horas ## minutos e ## segundos'); echo mask($hora,'##:##:##'); ?>

Sadas: Agora so 02 horas 10 minutos e 50 segundos 02:10:50 (esse voc vai usar, claro) Enm, desde que a quantidade de # seja igual a quantidade de nmeros, ou seja l o que contiver a varivel, porque no se limita apenas nmeros, poderia ser:
1 2 3 4 5 6 7 <? $str = "adoleta"; echo mask($str,'#-##-##-##'); ?>

Sada: a-do-le-ta
1 2 3 4 5 6 7 <? $valor = "100000"; echo mask($valor,'#.###,##'); ?>

2 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

Sida: 1.000,00 Pensou que era brincadeira o lance da coordenada estelar n ? t bo!
1 2 3 4 5 6 <? $coord_estelar = "10100505"; echo mask($coord_estelar,'p=(#.#,#.#,#.#,#.#)'); ?>

Sada: p=(1.0,1.0,0.5,0.5) isso galera, sigam as estrelas! abs

Comentrios 1. Adriano Aidar disse: novembro 12, 2010 s 1:19 pm Nossa muito loko simples e direto, j tinha visto um cdigo parecido mais esse curto e grosso diret ao ponto muito bom. Comentar 2. Marcelo Souza disse: novembro 25, 2010 s 6:33 pm Bem bacana esta dica, j usei e aps algumas adaptaes funcionou bem. Valeu! Comentar 3. Raphael disse: dezembro 2, 2010 s 8:27 pm Realmente muito bom. Venho acompanhando seu blog algumas semanas e gostaria de elogia-lo, pois est muito bem organizado ^^ Bom, te vejo enquando minha saga para aprender JQuery continua :D Comentar

3 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

Rafael Clares disse: dezembro 2, 2010 s 9:42 pm Opa! Obrigado pelo elogio! Tambm sou muito f do JQuery, tenho algumas coisas aqui para postar mas t meio corrido para mim, entre elas tem um textarea estilo o do facebook que vai aumentando conforme a necessidade, com o essa function que z basta adicionar uma class css no textarea e o resto ele faz sozinho bacana, assim que der eu vou posta-la. Abs Comentar 4. ehinarr disse: dezembro 14, 2010 s 2:51 am Show! Comentar 5. Jairus Lopes disse: janeiro 23, 2011 s 1:53 am Boa noite !! Esta a primeira vez que visito este blog e gostei muito, pois tenho algumas dvidas e as dicas do Rafael esto sendo muito importantes para mim. Parabns para voc Deus continue te dando esta sabedoria !!! Comentar 6. Marlon disse: janeiro 27, 2011 s 12:17 pm Muuuuuuuuuito brigado Comentar 7. Luiz disse: maro 1, 2011 s 3:31 pm Ol amigo, achei bastante simples seu codigo mas objetivo tenho os dados de um telefone no banco 9681125235 quando eu puxo ele para dentro do input ele aparece assim (96) 8112-5235 usando o seu codigo Mas eu gostaria que voce incrementasse uma soluo para caixas do que estejam em branco, onde eu digite e ele j vai separando (xx) xxxx-xxxx porm ele deve salvar no banco de dados sem esses caracteres divisores Se voce puder me ajudar agradeo Comentar Rafael Clares disse: maro 1, 2011 s 3:41 pm Luiz, na hora de gravar no banco voc precisa retirar os caracteres especiais com o preg_replace por exemplo.

4 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

ex: $telefone = preg_replace(/[\(\)\-]/,,$telefone); Comentar 8. Raphael disse: abril 4, 2011 s 9:10 pm Descobri algo legal, se voc usar: $hora = array(021050, 1, 2); echo mask($hora, Agora so # horas # minutos e # segundos); O retorno ser: Agora so 021050 horas 1 minutos e 2 segundos Comentar 9. fabio disse: maio 11, 2011 s 12:55 pm Na pratica pra valores onde o comprimento varivel , tido uma totalizao de relatrio, esta funo no funciona Comentar Rafael Clares disse: maio 11, 2011 s 8:00 pm Fbio e voc poderia dar um exemplo prtico que no funcione, digo, um nmero ou o exemplo que no funcionou para voc ? Se o comprimento varivel os parmetros devem ser tambm dinmicos, enm, espero que possa nos informar o que no deu certo s para o seu comentrio no desvalorizar a funo sem antes vermos. Abrao e obrigado por participar. Comentar 10. Wilson disse: julho 22, 2011 s 4:04 am Gostei muito da sua dica. Gostaria de saber se existe alguma maneira de fazer uma function que no momento em que eu for digitando os dados, por exemplo o CEP, ele coloque automaticamente o aps o quinto numero, somente com o PHP, sem usar javascript, para o caso da pessoa desabilit-lo. Um abrao Comentar Rafael Clares disse: julho 22, 2011 s 4:11 am Wilson, o PHP trabalha do lado servidor, ou seja, s executado partir do comento em que enviada a consulta. Para criar alguma interatividade com a interface deve ser uma linguagem que executada no lado cliente que nesse caso pode ser o JavaScript. Agora, o ideal que se o usurio desativou o Javascript, ento ele dever digitar os dados

5 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

com ou sem a mscara e voc formata os dados no PHP ao recebe-los. Em outras palavras para criar uma mscara enquanto o usurio digita voc precisa usar linguagens no cliente (browser). Se lhe interessar algo em js para criar na digitao veja esse link: abraos Comentar 11. Almir Mel (@almirmel) disse: outubro 14, 2011 s 4:37 pm Parabns muito bom mesmo! Vamos manter contato se quiser :) Comentar 12. Danilo Moraes disse: janeiro 10, 2012 s 7:11 pm Desculpa o linguajar chulo, mas essa mscara foi foda, era a soluo ideal pro meu projeto pois possui cdigo simples e limpo. Abraos. Comentar 13. agenteweb disse: janeiro 13, 2012 s 1:11 pm Do caralho! Obrigado mesmo! Comentar 14. jorge santos disse: janeiro 22, 2012 s 2:25 pm bom, mas se a tabela j est no formato da mask, ae ao buscar ele gera erros igual a este 01..09.8.9/83/0-00. O ideal seria ele fazer alteraro somente nos casos que o numero estivesse sem mask ou se existir a mask, mante-la. Comentar Rafael Clares disse: janeiro 23, 2012 s 12:29 pm Nossa, t bom de lgica em irmo! Veja, no acha mais fcil voc usar a mask apenas para inser no banco e ao ler no utiliza-la, ou ento, armazenar os dados sem traos ou pontos e utilizar a mask apenas ao exibir os dados? Vericar sem necessidade se o nmero est ou no com mascara sendo que eu posso ter certeza de que ele est ou no? O ideal saber como ser gravado no banco para no precisar existir os casos queo numero estivesse sem mask ou existir a mask, mante-la. Ate mais, abs

6 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

Comentar 15. Irineu Martins Junior disse: fevereiro 15, 2012 s 1:08 pm Cara parabens pela simplicidade do cdigo. Muito bom. Comentar 16. Gustavo disse: abril 19, 2012 s 3:23 pm Excelente dica! ja incorporei minha bilbioteca de funes. Comentar 17. Marcos Martins disse: maio 9, 2012 s 11:57 pm Parabns, realmente excelente o site e principalmente esse cdigo camaleo. Comentar 18. antonio disse: maio 22, 2012 s 6:12 pm muito boa essa congurao!!! Comentar 19. Santos disse: julho 6, 2012 s 1:58 am Muito bom, precisamos de mais pessoas que faa a distribuio de conhecimento. Comentar 20. Lucas S. Tenrio disse: agosto 6, 2012 s 7:48 pm //Segue o cdigo em Java Script tbm (Faz um Post de JS): function InserePontuacao(valor, mascara){ var maskared = ; var x = 0; for(var i = 0; i<=mascara.length-1; i++){ if(mascara[i] == '#'){ maskared += valor[x]; x++; }else{ maskared += mascara[i]; } } return maskared; }

7 de 8

18/10/2012 08:37

PHP Mscara CNPJ, CPF, Data e qualquer outra coisa Rafael Clares

http://clares.wordpress.com/2010/11/12/php-mascara-cnpj-cpf-data-e-...

//Segue exemplo de usu: //var cpf = ("98585695874","###.###.###-##"); //var cnpj = ("98585695000167","##.###.###/####-##"); Comentar Rafael Clares disse: agosto 13, 2012 s 2:07 pm Legal Lucas, valeu meu brother! Comentar 21. Joao Osrio Silva disse: agosto 23, 2012 s 6:18 pm Vixi esse matou a pau mesmo tima funcao para maskarar parabns! Comentar

Blog no WordPress.com. | Tema: Greyzed por The Forge Web Creations.

8 de 8

18/10/2012 08:37