Função para Formatar CPF/CNPJ

November 12th, 2008 | Tags: , , , ,

Uma simples função em PHP para formatar um CPF ou CNPJ. Tive a necessidade de implementa-la em um projeto que estou desenvolvendo e criei essa função… tá quentinha, acabou de sair do forno… aceito sugestões!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function formatarCPF_CNPJ($campo, $formatado = true){
	//retira formato
	$codigoLimpo = ereg_replace("[' '-./ t]",'',$campo);
	// pega o tamanho da string menos os digitos verificadores
	$tamanho = (strlen($codigoLimpo) -2);
	//verifica se o tamanho do código informado é válido
	if ($tamanho != 9 && $tamanho != 12){
		return false; 
	}
 
	if ($formatado){ 
		// seleciona a máscara para cpf ou cnpj
		$mascara = ($tamanho == 9) ? '###.###.###-##' : '##.###.###/####-##'; 
 
		$indice = -1;
		for ($i=0; $i < strlen($mascara); $i++) {
			if ($mascara[$i]=='#') $mascara[$i] = $codigoLimpo[++$indice];
		}
		//retorna o campo formatado
		$retorno = $mascara;
 
	}else{
		//se não quer formatado, retorna o campo limpo
		$retorno = $codigoLimpo;
	}
 
	return $retorno;
 
}

Basta chamar a função, informando como parâmetro o CNPJ / CPF e se deseja que retorne formatado, isso possibilita que você formate ou retire a formatação de um CNPJ / CPF.

1
2
3
4
5
print formatarCPF_CNPJ("01001001000101",true); 
// retorna 01.001.001/0001-01
 
print formatarCPF_CNPJ("01.001.001/0001-01",false); 
// retorna 01001001000101

  1. Caio Oliveira
    November 13th, 2008 at 08:13
    Reply | Quote | #1

    Gostei da função parabéns. Obrigado por compartilha-lá!

  2. November 21st, 2008 at 12:35
    Reply | Quote | #2

    ME BJA NA BOCA?

  3. February 25th, 2009 at 09:18
    Reply | Quote | #3

    Código espetacular.
    Funciona 100%.
    Obrigado

  4. May 20th, 2009 at 07:03
    Reply | Quote | #4

    Gostei!

    Eu ia criar uma função pra isso, mas googlei e achei exatamente o que precisava.

    Parabéns e Obrigado. ;D

  5. Diego
    June 27th, 2009 at 15:11
    Reply | Quote | #5

    Muito boa esta função, prática e fácil de usar.

    Parabéns.

  6. July 22nd, 2009 at 14:12
    Reply | Quote | #6

    Função muito útil, vou utilizar em uma class geral. Valeu Parabéns!

  7. July 29th, 2009 at 08:54
    Reply | Quote | #7

    Não seria mais fácil assim:

    $x = ’12345678911′;
    $y = preg_replace(‘/([d]{3})([d]{3})([d]{3})/’,'$1.$2.$3-’,$x);
    print_r($y);

    [s]

  8. Renato Silva
    August 5th, 2009 at 08:06
    Reply | Quote | #8

    Valeu cara, essas dicas sempre são de grande ajuda pra agilizar alguns esquemas que, pra fazer do zero, são cansativos e matam nosso tempo, que sempre é pouco. Agora o esquema é a gente montar uma biblioteca e soltar na net, rs rs
    Parabéns.

  9. August 19th, 2009 at 22:42
    Reply | Quote | #9

    Parabéns pelo excelente código e muito obrigado pela grande ajuda!

  10. September 11th, 2009 at 05:59

    Junior
    Muito mais facil o seu exemplo!!!

  11. December 17th, 2009 at 05:40

    Os dois exemplos são muito bons, mas o do Junior é demais, muito bom, pra ficar ainda mais eficiente, usei essa linha $codigoLimpo = ereg_replace(“[^0-9]“, ”, $var) para deixar o codigo realmente limpo, pois deixa somente numeros.

    Parabéns e obrigado.

  12. January 7th, 2010 at 13:34

    Muito simples, prático e eficiente.
    Show de bola.

  13. Igor
    February 4th, 2010 at 08:34

    Valeu por compartilhar o código do cnpj_cpf!!

  14. March 16th, 2010 at 07:40

    Mas a Marcos Junior pega pra cnpj também :)

  15. April 23rd, 2010 at 18:49

    Me poupou tempo, muito tempo. Valeu pela mão nas quatro rodas!

  16. rafael
    July 22nd, 2010 at 17:52

    Ficou muito massa. Me ajudou muito aqui.

    obrigado.

  17. Marcelo
    October 14th, 2010 at 15:47

    PARABÉNS PELA FUNÇÃO. ÓTIMA.

  18. November 6th, 2010 at 16:04

    Alguns CNPJs tem 15 números OK

    • Observador
      March 24th, 2011 at 06:38

      Tanto o CPF como o CNPJ são padrões, ou seja, TODOS tem a mesma quantidade de números.

      CNPJ com 15 números ? onde ? na CHINA ??

  19. January 11th, 2011 at 10:37

    Valeu mesmo. Usei no PDF do vtiger.

  20. January 26th, 2011 at 06:27

    Opa, ajudou bastente aqui. Criei uma view helper no Zend Framework, ficou belezinha! =D
    Valeu!