Hola yo no quería escribir tanto código así que investigue un poco y me di cuenta que las expresiones regulares ahorran mucho tiempo y código, combinando las funciones y el foreach y el if y el else if obtuve lo siguiente.
Enunciado:
Crear archivos php que ejecuten la tarea indicada:
a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.
b) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar qué consonantes son las que aparecen y cuántas veces aparecen usando funciones para cadenas PHP.
c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por ejemplo en lugar de <<El abecedario…>> se habrá de mostrar <<El *beced*rio…>>
d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la subcadena desde la primera aparición de <<completo>> excluyendo completo, es decir, deberá mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias funciones para cadenas PHP.
<?phpecho '<br>';echo '### Aqui las vocales ### <br>';$cadena ="El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";$vocales = 0;$consonantes = 0;foreach (count_chars($cadena, 1) as $i => $val) { $letra=$i; if (preg_match('/[aeiouáéíóúü]/i',chr($i))) { $vocales = $vocales + $val; echo chr( $letra) .' aparece '.substr_count($cadena, chr( $letra)). ' veces <br>'; } else if (preg_match('/[a-z]/i',chr($i))) { $consonantes= $consonantes + $val .'<br>'; // chr( $letra).'<br>'; //echo chr( $letra) .' aparece '.substr_count($cadena, chr( $letra)). ' veces <br>'; //chr($cons=$consonantes) .'<br>'; } }echo "<br> Vocales: $vocales <br>";echo '<br>';echo '### Aqui las consonantes ### <br>';$cadena ="El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";$vocales = 0;$consonantes = 0;foreach (count_chars($cadena, 1) as $i => $val) { $letra=$i; if (preg_match('/[aeiouáéíóúü]/i',chr($i))) { $vocales = $vocales + $val; } else if (preg_match('/[a-z]/i',chr($i))) { $consonantes= $consonantes + $val .'<br>'; echo chr( $letra) .' aparece '.substr_count($cadena, chr( $letra)). ' veces <br>'; } }echo "<br> Consonantes: $consonantes <br>";?>
Se pudo haber mandado a imprimir en uno solo las dos respuestas pero para efectos del ejercicio era mejor separado y aprovecha y cuenta el total de las vocales y consonantes.