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: bermartinv en 30 de Enero 2017, 23:34

Título: PHP Funciones cadenas contar el número de veces que aparece una letra CU00828B
Publicado por: bermartinv en 30 de Enero 2017, 23:34
Adjunto mis soluciones al tema CU00828B del curso elemental de programación web con PHP.

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

http://cursophp.byethost14.com/aprenderaprogramar/strings_CU00828B.php (http://cursophp.byethost14.com/aprenderaprogramar/strings_CU00828B.php)

Código: [Seleccionar]
<?php// APARTADO A$cadena = 'El abecedario completo es algo largo y detallarloexhaustivamente es costoso';$cadena_minusculas = strtolower($cadena);$miArray = count_chars ( $cadena_minusculas, 1);$vocalA = 0 ; $vocalE = 0 ; $vocalI = 0 ; $vocalO = 0 ; $vocalU = 0;foreach ($miArray as $indice => $valor) {   switch (chr($indice)) {     case 'a' :       echo 'Se han escrito '.$valor;       if ($valor > 1){         echo ' veces la letra '.(chr($indice)).'.<br/>';       }else{        echo ' vez la letra '.(chr($indice)).'.<br/>';       }       break;    case 'e' :       echo 'Se han escrito '.$valor;       if ($valor > 1){         echo ' veces la letra '.(chr($indice)).'.<br/>';       }else{        echo ' vez la letra '.(chr($indice)).'.<br/>';       }      break;    case 'i' :       echo 'Se han escrito '.$valor;       if ($valor > 1){         echo ' veces la letra '.(chr($indice)).'.<br/>';       }else{        echo ' vez la letra '.(chr($indice)).'.<br/>';       }      break;    case 'o' :       echo 'Se han escrito '.$valor;       if ($valor > 1){         echo ' veces la letra '.(chr($indice)).'.<br/>';       }else{        echo ' vez la letra '.(chr($indice)).'.<br/>';       }      break;    case 'u':       echo 'Se han escrito '.$valor;       if ($valor > 1){         echo ' veces la letra '.(chr($indice)).'.<br/>';       }else{        echo ' vez la letra '.(chr($indice)).'.<br/>';       }      break;     default:       break;   }}// APARTADO B   foreach ($miArray as $indice => $valor) {      switch (chr($indice)) {        case ' ' : break;        case 'a' : break;        case 'e' : break;        case 'i' : break;        case 'o' : break;        case 'u' : break;        default:            echo 'Letra distinta a vocal:    '.chr($indice).' , encontrada '.  $valor;            if ($valor > 1){              echo ' veces .<br/>';            }else{             echo ' vez .<br/>';            }          break;    }}// APARTADO Cecho 'Sustitucion letra "a" por el caracter "*"</br> ';echo str_replace('a','*',$cadena).'</br>';//APARTADO Decho 'La frase a continuacion de la palabra "completo" es: </br>';$posicion = strpos($cadena,'completo');$completo = strlen('completo');echo substr($cadena,$completo+$posicion); ?>


Saludos.  ;)
Título: Re:Curso PHP. Funciones cadenas. CU00828B
Publicado por: pedro,, en 31 de Enero 2017, 17:00
Hola bermatinv.

El ejercicio está bien resuelto, había varias formas de resolverlo, solo comentarte que en el apartado a te hubieses ahorrado algunas líneas usando "substr_count($cadena,$subcadena)".

Te dejo un enlace con una solución distinta:

https://www.aprenderaprogramar.com/foros/index.php?topic=4135.msg17346#msg17346

Saludos. ;D