Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Célio-Ctba

Tirar máscara do CNPJ p/ guardar no banco

Recommended Posts

Tenho um javascript q coloca máscara e verifica se o CNPJ é válido, mas na hr de colocar esse dado no banco, gostaria de colocar apenas os caracteres numéricos, e na hr de fazer uma consulta nesse banco, fazer o tratamento inverso, colocando os caracteres ../- para q na tela apareça correto.É possível esse tratamento com PHP ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para inserir a mascara quando fizer a consulta:

 

function mascara($expr,$mask) { 	$ret=""; 	$j=0; 	for ($i = 0; $i < strlen($expr); $i ++) 	{ 		if(($mask[$j]!="9") and ($mask[$j]!="X")) 		{ 			$ret.=$mask[$j]; 			$j++; 		} 		$ret.=$expr[$i]; 		$j++; 	} 	return $ret; }

para usar mascara($instituicoes['cnpj'],"99.999.999/9999-99")

 

para remover os caracteres ( . / -) faz o seguinte :

 

$chars = array(".","/","-");

$cnpj = str_replace($chars,"",$_POST['cnpj']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra tirar a máscara:

$cpf = preg_replace("/\D+/", "", $cpf); // remove qualquer caracter não numérico

 

Pra colocar:

$cpf = substr($cpf, 0, 3) . "." . substr($cpf, 3, 3) . "." . substr($cpf, 6, 3) . "-" . substr($cpf, -2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente Carlos, o seu para remover com expressão regular é melhor, só que com essa função, ele pode usar para qualquer mascara que ele quiser:mascara($instituicoes['cpf'],"999.999.999-99")mascara($instituicoes['cep'],"99999-999")mascara($instituicoes['fone'],"(99) 9999-9999")etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos aproveitando o embalo, você teria algumas expressões regulares para validação como no exemplo abaixo:ereg("^([0-9,a-z,A-Z,.,_,-]+)([@])([0-9,a-z,A-Z,_,-]+)([.])([a-z,A-Z]{2,3})([.][a-z,A-Z]{2,3})?", $_strEmail)Só que para cpf, cnpj, etc., para não ter que ficar usando funções para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wagner, não tenho nada pronto... mas se você quiser alguma delas, é só falar. Nos casos do CPF e do CNPJ, não acho que o mais indicado seja validar por expressões regulares... pois, com elas, você só consegue verificar o padrão dos caracteres. Embora haja um padrão nesses casos, há também uma lógica que gera o dígito verificador. Portanto, o ideal acho que seria utilizar uma função que checasse esse dígito verificador.

 

Mas se o caso for outro, diz como seria o padrão de caracteres a serem verificados que a gente dá um jeito... =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos nem esquenta, é que como não trabalho muito com expressões regulares, eu não sabia que não era possível fazer esse tipo de verificação, porque funções eu tenho tudo (referente ao que ja fiz de fomulários). Qualquer coisa a gente dá um grito ^^.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função você declara no inicio da página onde irá mostrar os dados e para usar, como exemplo uma tabela você colocará assim, dentro do código html:<?php echo mascara($instituicoes['cnpj'],"99.999.999/9999-99"); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah! Muito boa a função Wagner.

Vai ser muito útil; nunca tinha pensado em algo assim.

 

Ela só tm um pequeno problema..

Se tu colocar dois caracteres "não 9" consecutivamente, a função quebra.

Por exemplo, se chamara a função assim: mascara('555433323774','+99 (99) 9999-9999');

O 9, mais o espaço, quebram a ordem.

 

Então fiz uma mudança...

 

 

<?echo mascara('555433323774','+XX (XX) XXXX-XXXX');function mascara($string,$mascara) {		$return= '';	$j = '0';	for ($i='0'; $i<strlen($mascara); $i++) {			if ($mascara[$i] != 'X') $return .= $mascara[$i];				else {			$return .= $string[$j];			$j++;		}	}	return $return;}?>

Sei lá, talvez seja interessante. Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima a sua alteração Alex, eu não tinha testado com espaços nem sabia que isso estava acontecendo, muito bom assim você já testou e fez a alteração necessária. vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alteração... Coloquei um caractere de escape...function mascara($string,$mascara) { $return = ''; $j = '0'; for ($i='0'; $i<strlen($mascara); $i++) { //Y é char de escape - ele conta mais ignora if ($mascara[$i] == 'Y') $j++; // X é char de substituição elseif ($mascara[$i] == 'X') { $return .= $string[$j]; $j++; } // outros chars else $return .= $mascara[$i]; } return $return;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.