Função para formatar uma máscara automaticamente passada em uma $string ###

Ela ajuda a formatar uma $string passada que você já tenha validado a mesma com um tamanho fixo,
pode ser usada também em conjunto com uma outra função sua, para poupar o trabalho que teria
usando ‘mais’ comandos para o retorno desejado.


<?php

/*

Função para formatar uma string automaticamente usando uma máscara especifica desejada.


Exemplos de Uso:

$_CNPJ = "11222333000199";
$_CPF = "00100200300";
$_CEP = "08665110";
$_Data = "10102010";

echo MascaraX($_CNPJ,'##.###.###/####-##');
echo MascaraX($_CPF,'###.###.###-##');
echo MascaraX($_CEP,'#####-###');
echo MascaraX($_Data,'##/##/####');


Saídas:
11.222.333/0001-99
001.002.003-00
08665-110
10/10/2010

A saída é exatamente como você definir com os '#', você pode utilizar qualquer separador, qualquer caracter, ex:


$_Data = "10102010";
echo MascaraX($_Data,'##/##/####');
echo MascaraX($_Data,'[##][##][####]');
echo MascaraX($_Data,'(##)(##)(####)');

Saídas:
10/10/2010
[10][10][2010]
(10)(10)(2010)

Exemplo esquisito que ninguém jamais utilizará:

$_Hora = "021050";

echo MascaraX($_Hora,'Agora são ## horas ## minutos e ## segundos');
echo MascaraX($_Hora,'##:##:##');

Saídas:
Agora são 02 horas 10 minutos e 50 segundos 
02:10:50  (esse você vai usar, claro)


Enfim, desde que a quantidade de # seja igual a quantidade de números,
ou seja  lá o que contiver a variável, porque não se limita apenas à números, poderia ser:


$_String = "adoleta";

echo MascaraX($_String,'#-##-##-##');

Saída: a-do-le-ta


$_Valor = "100000";

echo MascaraX($_Valor,'#.###,##');

Saída: 1.000,00


Pensou que era brincadeira o lance da coordenada estelar né ? tá bão!

$_Coordenada_Estelar = "10100505";

echo MascaraX($_Coordenada_Estelar,'p=(#.#,#.#,#.#,#.#)');
Saída: p=(1.0,1.0,0.5,0.5)

É isso galera, sigam as estrelas!

*/


function MascaraX($_string, $_mascara) {
 $_mascara_finalizada = '';
 $_posicao = 0;
 for ($_x = 0; $_x<=strlen($_mascara)-1; $_x++)  {
 	if ($_mascara[$_x] == '#')  {
 	   if (isset($_string[$_posicao])) $_mascara_finalizada .= $_string[$_posicao++];
    } else {
       if (isset($_mascara[$_x])) $_mascara_finalizada .= $_mascara[$_x];
    }
 }
 return $_mascara_finalizada;
}


?>
1 Curtida

Show, Jailton. Obrigado por compartilhar.

Valeu Jailton, muito prática a função !

Jailton, obrigado pela sua colaboração.
Me ajudou aqui.