Sow 0 Denunciar post Postado Março 30, 2014 Boa tarde pessoal Estou aprendendo a programar em php, e estou praticando, mas travo em algumas coisas, será que vocês poderiam me ajudar? Nesse exercício, eu tenho que pegar um texto de um formulário e contar as vogais e consotantes, o problema é que eu não sei lidar direito com vetores, eu recebo uma string e como faço pra transformar ela para poder contar essas ocorrências? <?php header('Content-type: text/html; charset=UTF-8'); /* 5 - Faça um programa em PHP para ler um texto qualquer em uma textarea, * o programa deverá imprimir seu conteúdo na tela, juntamente com os seguintes dados: - Total de vogais escritas; - Total de consoantes escritas; - Total de caracteres escritos; */ if (isset($_POST['enviar'])) { //recebe o texto do formulário $recebe = $_POST['edt_text']; // Separa os acentos das letras $texto = iconv('utf-8', 'us-ascii//TRANSLIT', $recebe); // Remove qualquer coisa que não seja uma letra $texto = preg_replace("[\W]", "", $texto); // Passa tudo para minúculas $texto = strtolower($texto); // conta quantos caracteres (sem acentos e espaços) $tam = strlen($texto); // Transforma as letras em um array $letras = str_split($texto); $vog = 0; $con = 0; for ($i = 0; $i <= $tam; $i++) { if (($letras[$i] == 'a') || ($letras[$i] == 'e') || ($letras[$i] == 'i') || ($letras[$i] == 'o') || ($letras[$i] == 'u')) { $vog++; } else { $con++; } } echo 'Letras: <b>'.$tam.'</b>'; echo 'Vogais: <b>'.$vog.'</b>'; echo 'Consoantes: <b>'.$con.'</b>'; }else{ ?> <form name="form-exer05-aula05" method="POST" action="exercicio05.php"> Escreva aqui um texto: <br/> <textarea name="edt_text" rows = "10" cols = "50" maxlength = "550"> </textarea> <br/> <input type="submit" value="Enviar" name="enviar" /> </form> <?php } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 31, 2014 Eu conheço duas formas de se fazer isso, veja se consegue adaptar alguma delas para sua necessidade: $text = strtolower( 'Imasters' ); $vowels = array( 'a', 'e', 'i', 'o', 'u' ); $textLength = (int)strlen( $text ); $vowelsLength = (int)preg_match_all( "/[" . implode( $vowels ) . "]/i", $text, $matches ); $consonantsLength = $textLength - $vowelsLength; echo "Total de caracteres: " . $textLength . '<br>' . PHP_EOL; echo "Total de vogais: " . $vowelsLength . '<br>' . PHP_EOL; echo "Total de consoantes: " . $consonantsLength . '<br>' . PHP_EOL; $text = strtolower( 'Imasters' ); $vowels = array( 'a', 'e', 'i', 'o', 'u' ); $textLength = (int)strlen( $text ); $vowelsLength = 0; $consonantsLength = 0; for( $i = 0; $i < $textLength; $i++ ) { if ( in_array( $text[$i], $vowels ) ) { $vowelsLength++; } else { $consonantsLength++; } } echo "Total de caracteres: " . $textLength . '<br>' . PHP_EOL; echo "Total de vogais: " . $vowelsLength . '<br>' . PHP_EOL; echo "Total de consoantes: " . $consonantsLength . '<br>' . PHP_EOL; Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Março 31, 2014 Eu conheço duas formas de se fazer isso, veja se consegue adaptar alguma delas para sua necessidade: $text = strtolower( 'Imasters' ); $vowels = array( 'a', 'e', 'i', 'o', 'u' ); $textLength = (int)strlen( $text ); $vowelsLength = (int)preg_match_all( "/[" . implode( $vowels ) . "]/i", $text, $matches ); $consonantsLength = $textLength - $vowelsLength; echo "Total de caracteres: " . $textLength . '<br>' . PHP_EOL; echo "Total de vogais: " . $vowelsLength . '<br>' . PHP_EOL; echo "Total de consoantes: " . $consonantsLength . '<br>' . PHP_EOL; $text = strtolower( 'Imasters' ); $vowels = array( 'a', 'e', 'i', 'o', 'u' ); $textLength = (int)strlen( $text ); $vowelsLength = 0; $consonantsLength = 0; for( $i = 0; $i < $textLength; $i++ ) { if ( in_array( $text[$i], $vowels ) ) { $vowelsLength++; } else { $consonantsLength++; } } echo "Total de caracteres: " . $textLength . '<br>' . PHP_EOL; echo "Total de vogais: " . $vowelsLength . '<br>' . PHP_EOL; echo "Total de consoantes: " . $consonantsLength . '<br>' . PHP_EOL; [member=Jonaslhp] assumir que o total de consoantes seja igual ao tamanho do texto menos as vogais é um equívoco grande. Se esqueceu de considerar espaços e pontuação. Mas, como já foi dado um norte, deixa ele pensar um pouquinho por si só agora. Vai que o professor que passou o exercício acompanha o fórum, né? ;) Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 31, 2014 Jonaslhp assumir que o total de consoantes seja igual ao tamanho do texto menos as vogais é um equívoco grande. Se esqueceu de considerar espaços e pontuação. É verdade, Evandro! Fiz um exemplo rápido e não pensei em tudo que deveria, so sorry :( Aliás, como não pensei nisto antes, fiquei curioso. Acha que um :punct: e mais um preg_match_all poderia ser uma boa solução para contar as consoantes? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Abril 1, 2014 É verdade, Evandro! Fiz um exemplo rápido e não pensei em tudo que deveria, so sorry :( Aliás, como não pensei nisto antes, fiquei curioso. Acha que um :punct: e mais um preg_match_all poderia ser uma boa solução para contar as consoantes? Eu, particularmente, não resolveria com regex: http://php.net/explode http://php.net/array_filter http://php.net/array_count http://php.net/array_reduce Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Abril 5, 2014 Olá pessoal, como vcs demoraram para responder eu consegui resolver o problema sozinha. Eu precisava apenas retirar do código este trecho: // Transforma as letras em um array$letras = str_split($texto); Mas agradeço pela sugestão de vocês! =D Compartilhar este post Link para o post Compartilhar em outros sites