🎯 O que você vai aprender nesta aula:
- Como usar a função
ctype_digit()para saber se uma string contém apenas números. - Como verificar se uma letra é uma vogal usando arrays.
- A resolução completa do clássico exercício: "Faça um programa que verifique se uma letra digitada é vogal ou consoante".
- Boas práticas para tratar dados recebidos de formulários HTML no PHP.
Todo estudante de programação acaba esbarrando neste desafio clássico: "Faça um script que receba uma letra e diga se ela é vogal ou consoante". Parece simples, certo? Você coloca um IF/ELSE e pronto.
Porém, a regra número um do desenvolvimento web é: nunca confie no usuário. E se, em vez de uma letra, ele digitar um número? O seu sistema precisa estar preparado para identificar dígitos antes mesmo de pensar em vogais e consoantes.
Como saber se uma string é apenas número no PHP?
Para descobrir se o valor que o usuário digitou é composto exclusivamente por números (dígitos), o PHP nos fornece uma função nativa maravilhosa chamada ctype_digit().
A sintaxe é direta: ctype_digit($minhaString). Ela avalia a string fornecida e retorna TRUE se todos os caracteres da string forem numéricos. Se houver pelo menos uma letra, espaço ou caractere especial, ela retorna FALSE.
🛠️ Curiosidade Técnica: Diferente da função is_numeric() (que aceita números decimais com pontos ou sinais negativos), a ctype_digit() é estrita e só aceita números inteiros "puros" dentro de uma string (como "123" ou "0").
Exemplo Prático: Verificando se é Dígito
<html>
<head>
<title>Apostila PHP Progressivo</title>
</head>
<body>
<form action="" method="get">
Digite um único caractere:
<input type="text" name="carac" maxlength="1" required />
<input type="submit" value="Testar" />
</form>
<?php
// Verificamos se o formulário foi enviado para evitar erros
if(isset($_GET['carac'])) {
$meuCaractere = $_GET['carac'];
if(ctype_digit($meuCaractere)) {
echo "<p>O valor digitado <b>É UM NÚMERO</b> (dígito).</p>";
} else {
echo "<p>O valor digitado <b>NÃO É</b> um dígito.</p>";
}
}
?>
</body>
</html>
🤯 Muitas funções para decorar?
Entender validações como ctype_digit(), is_numeric() e manipulação de strings pode dar um nó na cabeça no começo. Mas você não precisa decorar nada! Com a Apostila PHP Progressivo, você tem o guia de consulta perfeito, com exercícios resolvidos e explicados passo a passo para estudar offline, no seu ritmo.
A Solução Completa: Vogal, Consoante ou Número?
Agora que já sabemos como barrar os números intrusos, vamos resolver o problema principal. Se o caractere não for um número, ele é uma letra. Mas como saber de forma inteligente se essa letra é uma vogal?
Uma forma péssima seria fazer um IF gigante: if($letra == 'a' || $letra == 'e' || $letra == 'i'...). Uma forma inteligente é usar um array e a função in_array() do PHP!
💡 Dica: Vamos usar a função strtolower() para converter a letra digitada pelo usuário para minúscula. Assim, não importa se ele digitar "A" maiúsculo ou "a" minúsculo, o nosso código vai reconhecer.
<?php
if(isset($_GET['carac'])) {
// Recebe o caractere e já converte para minúsculo
$letra = strtolower(trim($_GET['carac']));
// Cria uma lista (array) com as vogais
$vogais = ['a', 'e', 'i', 'o', 'u'];
// Validação 1: O usuário digitou um número?
if(ctype_digit($letra)) {
echo "<h3>Você digitou um NÚMERO! Digite uma letra.</h3>";
}
// Validação 2: A letra está dentro do nosso array de vogais?
elseif(in_array($letra, $vogais)) {
echo "<h3>A letra '$letra' é uma VOGAL.</h3>";
}
// Validação 3: Se não é número e não é vogal, só pode ser...
else {
echo "<h3>A letra '$letra' é uma CONSOANTE.</h3>";
}
}
?>
Pronto! Dessa forma criamos um sistema à prova de falhas. Nós filtramos os números, agrupamos as vogais de forma limpa e otimizamos o tempo do nosso servidor.
Sua lógica de validação já está afiada! Que tal mergulharmos em novas estruturas na próxima aula?
Continuar Curso (Próxima Aula) »
Nenhum comentário:
Postar um comentário