Ajuda com Exercício PHP - Teste de Conhecimento IV
22/12/2019
0
Complete o código para verificar se o número de um celular cadastrado está no formato:
*Com nove dígitos
*E o primeiro dígito é o 9
*Sem caracteres especiais ou espaço em branco
$telefone = ''996744729'';
$qntDigitos = strlen($telefone);
$espacoVazio = 0;
$caractereEspecial = 0;
if ($qntDigitos == 9 && substr($telefone, 0, 1) == ‘9’) {
for($indice = 1; $indice <= $qntDigitos; $indice++) {
switch ($telefone[$indice]) {
case ‘ ‘:
$espacoVazio++;
break;
case ‘-‘:
$caractereEspecial++;
break;
}
}
if ($espacoVazio > 0 || $caractereEspecial > 0) {
echo "Presença de caractere especial ou espaço em branco";
} else {
echo "Número válido";
}
} else {
echo "Número invalido";
}
Ramiro Pamponet
Post mais votado
26/12/2019
$telefone = ''996744729'';
$qntDigitos = strlen($telefone);
$espacoVazio = 0;
$caractereEspecial = 0;
if ($qntDigitos == 9 && substr($telefone, 0, 1) == ‘9’) {
for($indice = 1; $indice < $qntDigitos; $indice++) {
switch ($telefone[$indice]) {
case ‘ ‘:
$espacoVazio++;
break;
case ‘-‘:
$caractereEspecial++;
break;
}
}
if ($espacoVazio > 0 || $caractereEspecial > 0) {
echo "Presença de caractere especial ou espaço em branco";
} else {
echo "Número válido";
}
} else {
echo "Número invalido";
}
Ramiro Pamponet
Mais Posts
23/12/2019
Fernando Junior
Complete o código para verificar se o número de um celular cadastrado está no formato:
*Com nove dígitos
*E o primeiro dígito é o 9
*Sem caracteres especiais ou espaço em branco
$telefone = ''996744729'';
$qntDigitos = strlen($telefone);
$espacoVazio = 0;
$caractereEspecial = 0;
if ($qntDigitos == 9 && substr($telefone, 0, 1) == ‘9’) {
for($indice = 1; $indice <= $qntDigitos; $indice++) {
switch ($telefone[$indice]) {
case ‘ ‘:
$espacoVazio++;
break;
case ‘-‘:
$caractereEspecial++;
break;
}
}
if ($espacoVazio > 0 || $caractereEspecial > 0) {
echo "Presença de caractere especial ou espaço em branco";
} else {
echo "Número válido";
}
} else {
echo "Número invalido";
}
Use expressões regulares. Você pode verificar o tamanho usando o strlen mesmo, mas antes aplicando um trim da vida para retirar os brancos das extremidades da cadeia de caracteres, mas depois é usar algo como
// Um número 9 seguido de oito números quaisquer ficaria algo parecido com:
\\\\9[0-9]{8]\\\\
23/12/2019
Rodolfo Gomes
Complete o código para verificar se o número de um celular cadastrado está no formato:
*Com nove dígitos
*E o primeiro dígito é o 9
*Sem caracteres especiais ou espaço em branco
$telefone = ''996744729'';
$qntDigitos = strlen($telefone);
$espacoVazio = 0;
$caractereEspecial = 0;
if ($qntDigitos == 9 && substr($telefone, 0, 1) == ‘9’) {
for($indice = 1; $indice <= $qntDigitos; $indice++) {
switch ($telefone[$indice]) {
case ‘ ‘:
$espacoVazio++;
break;
case ‘-‘:
$caractereEspecial++;
break;
}
}
if ($espacoVazio > 0 || $caractereEspecial > 0) {
echo "Presença de caractere especial ou espaço em branco";
} else {
echo "Número válido";
}
} else {
echo "Número invalido";
}
Fala Ramiro, tranquilo?
Shoooow o interesse por platinar a sala =D
E com certeza ajudamos quanto a isso! Vendo pelo seu código vc pegou praticamente a ideia do exercício, do seu funcionamento.
O detalhe que dará a cereja do bolo para completar esta no laço de repetição criado que percorre a string com o número de telefone.
Pois como já identificou que a primeira condição esta satisfeita ele precisa dar inicio a verificação após esse primeiro número até o seu final.
Dê uma atenção especial nessa parte que verá o passou despercebido ;)
Mas no que precisar não deixe de compartilhar
Grande abraço!
23/12/2019
Ramiro Pamponet
Pois como já identificou que a primeira condição esta satisfeita ele precisa dar inicio a verificação após esse primeiro número até o seu final.
Boa tarde Rodolfo,
O problema está no "FOR" ou no "SWITCH"? Ainda estou "cego"!
24/12/2019
Ramiro Pamponet
while($telefone[$indice]) {
$espacoVazio ' ':
$espacoVazio++;
continue; // Caso a condição fosse falsa. (também tentei com break)
$caractereEspecial '-':
$caractereEspecial++;
continue; // Caso a condição fosse falsa. (também tentei com break)
}
Sem resultado. Preciso de ajuda para conseguir enxergar onde estou errando.
24/12/2019
Ramiro Pamponet
// Um número 9 seguido de oito números quaisquer ficaria algo parecido com:
\\\\\\\\9[0-9]{8]\\\\\\\\
Boa Noite Fernando,
Esse recurso da expressão regular eu usaria exatamente onde? Na segunda condição do 1º if, no for, no while? Engraçado vc comentar sobre esse assunto, já que na documentação da sala não consta nada sobre expressão regular.
27/12/2019
Rodolfo Gomes
$telefone = ''996744729'';
$qntDigitos = strlen($telefone);
$espacoVazio = 0;
$caractereEspecial = 0;
if ($qntDigitos == 9 && substr($telefone, 0, 1) == ‘9’) {
for($indice = 1; $indice < $qntDigitos; $indice++) {
switch ($telefone[$indice]) {
case ‘ ‘:
$espacoVazio++;
break;
case ‘-‘:
$caractereEspecial++;
break;
}
}
if ($espacoVazio > 0 || $caractereEspecial > 0) {
echo "Presença de caractere especial ou espaço em branco";
} else {
echo "Número válido";
}
} else {
echo "Número invalido";
}
Shooooow Ramiro, viu que era apenas um detalhe simples para concluir e questão. =D
27/12/2019
Fernando Junior
// Um número 9 seguido de oito números quaisquer ficaria algo parecido com:
\\\\\\\\\\\\\\\\9[0-9]{8]\\\\\\\\\\\\\\\\
Boa Noite Fernando,
Esse recurso da expressão regular eu usaria exatamente onde? Na segunda condição do 1º if, no for, no while? Engraçado vc comentar sobre esse assunto, já que na documentação da sala não consta nada sobre expressão regular.
Com a expressão regular você já saberia em uma comparação(match) se o que você tem se encaixa no que você procura. De uma tacada só você saberia se a sua string começa com 9, seguida de 8 dígitos e sem dígitos à direita ou esquerda, mas acho que invalidaria o objetivo do exercício já que é preciso mostrar os erros intermediários, o que levaria a ter que usar uma expressão regular para verificar se começa com 9, outra para ver se a string possui espaços à direita e à esquerda, outra para verificar se possui 9 caracteres e outra para verificar se são dígitos que seguem o número 9. De qualquer fora, loops não seriam necessários.
Clique aqui para fazer login e interagir na Comunidade :)