Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Dimitar Stefanov en 09 de Mayo 2016, 20:04
-
Buenas noches. Dejo una posible solución del ejercicio CU00828B del curso PHP desde cero.
EJERCICIO
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.
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadenaMinusculas = strtolower($cadena01);
$subcadena01 = substr_count($cadenaMinusculas, "a");
$subcadena02 = substr_count($cadenaMinusculas, "e");
$subcadena03 = substr_count($cadenaMinusculas, "i");
$subcadena04 = substr_count($cadenaMinusculas, "o");
$subcadena05 = substr_count($cadenaMinusculas, "u");
echo "En la cadena: '".$cadena01."' se reptines: <br>".$subcadena01." veces la letra 'a'<br>".$subcadena02." veces la letra 'e'<br>".$subcadena03." veces la letra 'i'<br>".$subcadena04." veces la letra 'o'<br>".$subcadena05." veces la letra 'u'";
?>
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.
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadenaMinusculas = strtolower($cadena01);
$reemplazarA = str_replace("a", "", $cadenaMinusculas);
$reemplazarE = str_replace("e", "", $reemplazarA);
$reemplazarO = str_replace("o", "", $reemplazarE);
$reemplazarU = str_replace("u", "", $reemplazarO);
$reemplazarI = str_replace("i", "", $reemplazarU);
$reemplazarEspacio = str_replace(" ", "", $reemplazarI);
$miArray = count_chars($reemplazarEspacio, 1);
foreach($miArray as $indiceNum => $veces){
echo "La consonante: '".chr($indiceNum)."' se repite: ".$veces." veces<br>";
}
?>
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…>>
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 = str_replace("a", "*", $cadena01);
echo "Cadena original: ".$cadena01."<br>Cadena modificada: ".$cadena02;
?>
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.
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 = strstr($cadena01, "es", false);
echo $cadena02;
?>
Gracias.
-
Buenos días, todo bien
En algunas versiones de php la función strstr no admite el parémetro booleano y aparece el mensaje de error Warning: Wrong parameter count for strstr() in... En estas versiones de php que no admiten el parámetro el último ejercicio se escribiría:
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 = strstr($cadena01, "es");
echo $cadena02;
?>
En el último ejercicio te has valido de un "truco" que es tomar la palabra posterior a "completo". Sin embargo esto hace el código débil: desde que se cambia la frase tu código ya no funciona. Por ejemplo:
<?php
$cadena01 = "El abecedario es completo; creado por la Real Academia es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 = strstr($cadena01, "es");
echo $cadena02;
?>
Si te basas en la palabra completo tu código será más fuerte.
Saludos.
-
Buenas tardes, Mario.
Gracias por tu corrección y tiempo.
Tendré en cuenta lo que me comentaste sobre la función "strstr()" y el parámetro booleano.
Sobre el apartado d), sí, no caía como lo podía hacer y lo hice de la manera que lo viste. Pero ahora, viendo tu comentario y buscando un poquito en la misma entrega CU00828B ya descubrí visto como se puede hacer :)
Dejo el código corregido:
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.
<?php
$cadena01 = "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 = strpos($cadena01, "completo");
$cadena03 = substr($cadena01, $cadena02+8);
echo $cadena03;
?>
Gracias :)