Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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 :
if(!preg_match("@".$pattern."@", $string)) {
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