Exercício PHP: Como Saber se é Vogal, Consoante ou Número [Código]

🎯 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.

Baixar Material Completo →

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:

Veja também: