Hola a todos:
La letra del ejercicio es la siguiente:
EJERCICIO
Crea el código PHP que cumpla con lo que se indica a continuación:
a) Declara una variable cuyo contenido sea la cadena "Didáctica y divulgación de la programación"
b) Usando la función substr extrae cada una de las palabras de la cadena anterior a una variable. Como tenemos 6 palabras, debes tener 6 variables con las subcadenas.
c) Usando la concatenación muestra por pantalla lo siguiente: <<Las palabras primera, tercera y sexta son: Didáctica, divulgación, programación>>
d) Usando strlen muestra por pantalla lo siguiente: <<La palabra primera es Didáctica y tiene 9 caracteres, la palabra tercera es divulgación y tiene 11 caracteres. La palabra sexta es programación y tiene 12 caracteres>>
Y mi código:
<meta charset="UTF-8">
<?php $frase = "Didáctica y divulgación de la programación";$did = substr($frase,0,9);$y = substr($frase,10,1);$div = substr($frase,12,11);$de = substr($frase,24,2);$la = substr($frase,27,2);$pro = substr($frase,30,12);echo "Las palabras primera, tercera y sexta son: $did, $div, $pro <br/>";echo "La palabra primera es $did y tiene ";echo strlen($did);echo " caracteres, la palabra tercera es $div y tiene ";echo strlen($div);echo " caracteres. La palabra sexta es $pro y tiene ";echo strlen($pro);echo " caracteres";?>
A pesar de que tuve la precaución de incluir el <meta charset="UTF-8"> como lo hago siempre en HTML (aunque no sé si es lo apropiado en este caso), y a pesar de que tengo el Notepad++ configurado en UTF-8 sin BOM, no he conseguido que la letra "o" con acento se visualice bien (aunque sí se visualiza bien la "a" con acento). Me aparece en su lugar un signo de interrogación dentro de un rombo negro, y creo que esto también me está afectando el conteo de caracteres para las funciones substr() y strlen(). ¿Cómo lo soluciono?
Gracias.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php $frase = "Didáctica y divulgación de la programación";$did = substr($frase,0,10);$div = substr($frase,13,12);$pro = substr($frase,-13);echo "Las palabras primera, tercera y sexta son: $did, $div, $pro <br/>";echo "La palabra primera es $did y tiene ";echo strlen($did)-1;echo " caracteres, la palabra tercera es $div y tiene ";echo strlen($div)-1;echo " caracteres. La palabra sexta es $pro y tiene ";echo strlen($pro)-1;echo " caracteres";?>
</body>
</html>
Los caracteres especiales y acentuados utilizan 2 posiciones del array que compone el string y por eso te daba fallo y no entiendes porque esta fallando si las longitudes que aplicas están bien.
Imagínate que cuando es un carácter especial o acentuado suma 2 en vez de 1 sería algo así:
0 1 2 3 4 5
[C, O, J, O, (acentuada), N]
PD: Sublime Text >> Notepad ++ :D
Hola, deja así el código
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UFT-8">
</head>
<body>
<?php $frase = "Didáctica y divulgación de la programación";$did = substr($frase, 0,10);$y = substr($frase, 10,12);$div = substr($frase, 12,12);$de = substr($frase,24,2);$la = substr($frase,27,2);$pro = substr($frase,31,40);echo "Las palabras primera, tercera y sexta son: $did, $div, $pro <br/>";echo "La palabra primera es $did y tiene ";echo strlen($did);echo " caracteres, la palabra tercera es $div y tiene ";echo strlen($div);echo " caracteres. La palabra sexta es $pro y tiene ";echo strlen($pro);echo " caracteres";echo "<br />";echo $frase;?>
</body>
</html>
¡Saludos!