-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathphoneMask1.php
37 lines (32 loc) · 1.44 KB
/
phoneMask1.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
// Crie uma função que retorne formatado um número de telefone recebido por argumento. O formato deve estar acordo com os exemplos fornecidos abaixo:
// 8 dígitos: xxxx xxxx
// 10 dígitos: (xx) xxxx-xxxx
// 11 dígitos: (xx) x-xxxx-xxxx
// 11 dígitos, começando com 0800 ou 0300: xxxx xxx xxxx
// Se o número recebido pela função contiver algum caractere não numérico, a função deve retornar o próprio número recebido.
// O mesmo comportamento deve ocorrer caso a quantidade de dígitos do número não corresponder aos exemplificados na tabela acima.
$phone = [
'cleanedValue' => '',
'formattedValued' => ''
];
$phone['cleanedValue'] = readline('Digite o telefone: ');
function mask($phone): string {
$len = mb_strlen($phone);
if ($len == 8) {
return mb_substr($phone, 0, 4) . ' ' . mb_substr($phone, 4);
} else if ($len == 10) {
return '(' . mb_substr($phone, 0, 2) . ') ' . mb_substr($phone, 2, 4) . '-' . mb_substr($phone, 6);
} else if ($len == 11) {
if (mb_substr($phone, 0, 4) == '0800' || mb_substr($phone, 0, 4) == '0300' ) {
return mb_substr($phone, 0, 4) . ' ' . mb_substr($phone, 4, 3) . ' ' . mb_substr($phone, 7);
} else {
return '(' . mb_substr($phone, 0, 2) . ') ' . mb_substr($phone, 2, 1) . '-' . mb_substr($phone, 3, 4) . '-' . mb_substr($phone, 7);
}
} else {
return $phone;
}
}
$phone['formattedValued'] = mask($phone['cleanedValued']);
echo $phone['formattedValued'];
?>