El enunciado dice esto:
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.
El codigo que yo he escrito es este:
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php echo '<h1> Apartado a)</h1>'; //Apartado a) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; $a = 0; $e = 0; $i = 0; $o = 0; $u = 0; for ($cont=0; $cont<=strlen($cadena)-1; $cont++) { switch ($cadena[$cont]) { case 'a': case 'A': $a++; break; case 'e': case 'E': $e++; break; case 'i': case 'I': $i++; break; case 'o': case 'O': $o++; break; case 'u'; case 'U': $u++; break; } } echo 'Letra: a encontrada '. $a.' veces<br/>'; echo 'Letra: e encontrada '. $e.' veces<br/>'; echo 'Letra: i encontrada '. $i.' veces<br/>'; echo 'Letra: o encontrada '. $o.' veces<br/>'; echo 'Letra: u encontrada '. $u.' veces<br/>'; echo '</br></br>'; echo '<h1> Apartado b)</h1>'; //Apartado b) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; $b = 0; $c = 0; $d = 0; $f = 0; $g = 0; $h = 0; $j = 0; $k = 0; $l = 0; $m = 0; $n = 0; $ñ = 0; $p = 0; $q = 0; $r = 0; $s = 0; $t = 0; $v = 0; $w = 0; $x = 0; $y = 0; $z = 0; for ($cont=0; $cont<=strlen($cadena)-1; $cont++) { switch ($cadena[$cont]) { case 'b': case 'B': $b++; break; case 'c': case 'C': $c++; break; case 'd': case 'D': $d++; break; case 'f': case 'F': $f++; break; case 'g'; case 'G': $g++; break; case 'h': case 'H': $h++; break; case 'j': case 'J': $j++; break; case 'k': case 'K': $k++; break; case 'l': case 'L': $l++; break; case 'm'; case 'M': $m++; break; case 'n': case 'N': $n++; break; case 'ñ': case 'Ñ': $ñ++; break; case 'p': case 'P': $p++; break; case 'q': case 'Q': $q++; break; case 'r'; case 'R': $r++; break; case 's': case 'S': $s++; break; case 't': case 'T': $t++; break; case 'v': case 'V': $v++; break; case 'x': case 'X': $x++; break; case 'y'; case 'Y': $y++; break; case 'z'; case 'Z': $z++; break; } } echo 'Letra: b encontrada '. $b.' veces<br/>'; echo 'Letra: c encontrada '. $c.' veces<br/>'; echo 'Letra: d encontrada '. $d.' veces<br/>'; echo 'Letra: f encontrada '. $f.' veces<br/>'; echo 'Letra: g encontrada '. $g.' veces<br/>'; echo 'Letra: h encontrada '. $h.' veces<br/>'; echo 'Letra: j encontrada '. $j.' veces<br/>'; echo 'Letra: k encontrada '. $k.' veces<br/>'; echo 'Letra: l encontrada '. $l.' veces<br/>'; echo 'Letra: m encontrada '. $m.' veces<br/>'; echo 'Letra: n encontrada '. $n.' veces<br/>'; echo 'Letra: ñ encontrada '. $ñ.' veces<br/>'; echo 'Letra: p encontrada '. $p.' veces<br/>'; echo 'Letra: q encontrada '. $q.' veces<br/>'; echo 'Letra: r encontrada '. $r.' veces<br/>'; echo 'Letra: s encontrada '. $s.' veces<br/>'; echo 'Letra: t encontrada '. $t.' veces<br/>'; echo 'Letra: v encontrada '. $v.' veces<br/>'; echo 'Letra: w encontrada '. $w.' veces<br/>'; echo 'Letra: x encontrada '. $x.' veces<br/>'; echo 'Letra: y encontrada '. $y.' veces<br/>'; echo 'Letra: z encontrada '. $z.' veces<br/>'; echo '</br></br>'; echo '<h1> Apartado c)</h1>'; //Apartado c) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; echo str_replace("a", "*", $cadena); echo '</br></br>'; echo '<h1> Apartado d)</h1>'; //Apartado d) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; echo strstr($cadena, "es", false); ?>
</body>
</html>
Ovbiamente, seguro que los dos primeros apartados se pueden optimizar muchisimo, pero no he encontrado la manera.
Si se os ocurre como optimizarlo, decidmelo please :)
Cesar, ya intente usar la funcion count chart y bucles foreach para tratar de contar las bocales y despues las consonantes, pero no acaba de funcionar...
Lo unico que consigo es contar todas las letras, pero no distinguir entre vocales y consonantes... por eso acabé haciendolo a lo bestia :P
Este codigo es lo que tengo (sdolo hay que hacer cuatro modificaciones a un ejemplo de la entrega)
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php echo '<h1> Apartado a)</h1>'; //Apartado a) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; $Array = count_chars ( $cadena, 1); foreach ($Array as $indiceNum => $veces) { echo 'Letra: '.chr($indiceNum).' , encontrada '. $veces.' veces<br/>'; } ?>
</body>
</html>Pero esto cuenta todas las letras, no solo las vocales, o no solo las consonantes... y no encuentro como modificarlo para que haga lo que tiene que hacer
Releyendo el texto del curso la función substr_count es la que parece que permite resolver más fácilmente este tipo de problemas (mejor que count_chars). Para cada apartado habría que buscar la función que mejor se adapta a resolver el problema.
El código para contar las vocales sería este:
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php echo '<h1> Apartado a)</h1>'; //Apartado a) $cadena = 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso'; $numeroDeAs = substr_count($cadena, "a")+substr_count($cadena, "A"); $numeroDeEs = substr_count($cadena, "e")+substr_count($cadena, "E"); $numeroDeIs = substr_count($cadena, "i")+substr_count($cadena, "I"); $numeroDeOs = substr_count($cadena, "o")+substr_count($cadena, "O"); $numeroDeUs = substr_count($cadena, "u")+substr_count($cadena, "U"); echo 'Cadena: '.$cadena.'<br/><br/>'; echo 'Letra: a encontrada '. $numeroDeAs.' veces<br/>'; echo 'Letra: e encontrada '. $numeroDeEs.' veces<br/>'; echo 'Letra: i encontrada '. $numeroDeIs.' veces<br/>'; echo 'Letra: o encontrada '. $numeroDeOs.' veces<br/>'; echo 'Letra: u encontrada '. $numeroDeUs.' veces<br/>'; echo '</br></br>'; ?>
</body>
</html>