Ir para conteúdo

POWERED BY:

Arquivado

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

Alisson Rodrigues

Máscara

Recommended Posts

Fala galera, baseado no tema do último duelo, eu criei essa função de máscara, aí vai:

<?function mask($string,$mask) {$mString = preg_replace("/[A-Za-z]/","@",$string); // Forma a máscara do texto digitado$mString = preg_replace("/[0-9]/","#",$mString); // Forma a máscara do texto digitado// Testa se máscaras são iguais$maskSep = preg_replace("/[@#]/","",$mask); // Pega os separadores contidos na máscara$maskSemSep = preg_replace("/[^@#]/","",$mask); // Tira os separadores da máscara$mSSemSep = preg_replace("/[^@#]/","",$mString); // Tira separadores da máscara do textoif ($maskSemSep!=$mSSemSep) return FALSE; // Máscaras diferente, o erro é retornadoif (!$maskSep) return preg_replace("/[^A-Za-z0-9]/","",$string); // Se mask não possui separador...// Formatar texto se for válido:for ($num=0;$num<strlen($mask);$num++) {  // Analisa caracter por caracterif ($mString[$num2]==$mask[$num]) { // Se o caracter for no padrão da máscara...$nString .= $string[$num2]; // ...novo texto recebe o caracter$num2++; // O ponteiro avança um caracter} else if (substr_count($maskSep,$mask[$num])) { // Caso o caracter seja um separador...$nString .= $mask[$num]; // ...novo texto recebe o separador} else { // Caso não seja um caracter válido, nem um separador...return FALSE; // ...retorna FALSE} }return $nString; // Retorna o novo texto formatado}?>
Para você invocar a função:

echo mask("SHA1587","@@@-####");

Nesse caso eu usei o formato da placa de um carro como máscara, e coloquei a placa ainda não formatada. Como a placa está no padrão da máscara, a função retornará a placa formatada. Caso a placa não esteja no formato correto, será retornado o valor boolean FALSE. Se você quer apenas analisar se algo está no formato correto, use:

if (mask("SHA1587","@@@-####")) echo "Está correto"; else echo "Está errado";

No caso acima será mostrada a mensagem "Está correto", sendo retornado o valor "SHA-1587".Ainda não fiz pra poder aceitar tanto número como letra. Se eu fizer, posto depois. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu comecei a fazer uma função desas mas depois parei, mas eu comecei logo por essa parte que você ainda nao fez eu crio o ER dinamicamente para validar se é numero ou letra a parte que eu fiz é essa aqui :

 

	$pattern = preg_replace("@([^9#])@", "", $mascara);	
$pattern = str_replace(9, "\d{1}", $pattern);
$pattern = str_replace("#", "\w{1}", $pattern);

if(!preg_match("@".$pattern."@", $string)) {
	echo $mens;
	exit;
}

 

se der tbm faço minha função e posto aqui é o duelo foi muito bom e essa função de mascara é bem legal e estimula a mente

 

valeu prescot

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.