Com a nova atualização dos números celulares do Rio, SP e outros estados a qual está sendo necessários adicionar 9 após o DDD.
Assim os números celulares ficaram desta forma: (XX) 9XXXX-XXXX, então imagina ter que trocar todos os números manualmente, ou caso o usuário venha fazer um novo cadastro em seu sistema e acabe esquecendo-se de colocar o 9 antes dos outros números, o que fazer?
Acabei criando uma simples função em PHP que pode ser usada para o tratamento e prevenção de possíveis problemas relacionados a falta do (9) nono digito,
Na função criada optei por deixar alguns comentários no decorrer dom código. Assim Facilitando a compreensão do mesmo.
Esta função trata somente os números que estão completos, assim evitando problemas como a utilização de ramais, ou outros problemas relacionados aos números.
Abaixo segue todo o código juntamente com alguns valores usados no exemplo:
$tel = '(44)9569-22371';
//$tel = '21995683210';
//$tel = '2396329';
function adiciona_9_digito($tel){
//verificando se é celular
$array_pre_numero = array ("9","8","7");
// retirando espaços
$tel = trim($tel);
// seria melhor cirar uma white list.
// tratando manualmente
$tel = str_replace("-", "", $tel);
$tel = str_replace("(", "", $tel);
$tel = str_replace(")", "", $tel);
$tel = str_replace("_", "", $tel);
$tel = str_replace(" ", "", $tel);
//---------------------
$tamanho = strlen($tel);
// maior
if($tamanho > '10'){
// não faz nada
$telefone = $tel;
}
//igual
if($tamanho == '10'){
$verificando_celular = substr($tel, 2, 1);
if(in_array($verificando_celular, $array_pre_numero)){
$telefone.= substr($tel, 0, 2);
$telefone.= "9"; // nono digito
$telefone.= substr($tel, 2);
}
else{
$telefone = $tel;
}
}
//menor
if($tamanho < '10'){
// não faz nada
$telefone = $tel;
}
return $telefone;
}
echo adiciona_9_digito($tel);
Caso Exista alguma duvida do funcionamento ou alguma correção por favor comente a baixo. :)