Autor Tema: Warning: Wrong parameter count for strstr() in Funciones cadenas en PHP CU0828B  (Leído 2550 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas noches. Dejo una posible solución del ejercicio CU00828B del curso PHP desde cero.

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

Código: [Seleccionar]
<?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'";

?>

Citar
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ódigo: [Seleccionar]
<?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($reemplazarEspacio1);
foreach($miArray as $indiceNum => $veces){
echo "La consonante: '".chr($indiceNum)."' se repite: ".$veces." veces<br>";
}
?>

Citar
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…>>

Código: [Seleccionar]
<?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;

?>

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

Código: [Seleccionar]
<?php 

$cadena01 "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cadena02 strstr($cadena01"es"false);
echo $cadena02;

?>

Gracias.
« Última modificación: 12 de Mayo 2016, 08:52 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
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:

Código: [Seleccionar]
<?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:

Código: [Seleccionar]
<?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.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
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:

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

Código: [Seleccionar]
<?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 :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".