PHP - tarea: textarea que se pueda introducir un texto de hasta 10 lineas

 
Vista:

tarea: textarea que se pueda introducir un texto de hasta 10 lineas

Publicado por Arturo (1 intervención) el 17/12/2019 17:47:52
Hola a todos,
Soy muy nuevo en esto de PHP y necesito ayuda con una tarea que tengo que hacer para superar el curso(soy estudiante aún). Sobre todo como lo haríais para empezar, porque es donde más atascado estoy. Por favor, si pudieraís ayudarme os lo agradecería mucho. Os dejo el enunciado del ejercicio por aquí, un saludo a todos.

Deberá crear una página .php llamada LetrasTexto.php, esta tendrá un formulario con un campo de tipo TextArea, llamado 'Texto' en el que se pueda introducir un texto de hasta 10 lineas máximo. Debajo del textarea habrá un botón de envío(Submit) y otro para limpiar el contenido del campo(Reset).

Al pulsar el botón de Submit los datos del textarea se autoenvíaran a la página la cual, mediante el código Php, deberá procesarlo para mostrar por pantalla una tabla que contendrá en la primera columna cada una de las letras que aparezcan en el texto y en la segunda el número de veces que esa letra se encuentra en el texto introducido.

Ej: Si en el textarea introducimos : 'En un lugar de la mancha', al pulsar el botón la página mostrará:

Letra

Repeticiones

E 2

n 3

u 2

l 2

g 1

a 3

r 1

d 1

m 1

c 1

h 1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

tarea: textarea que se pueda introducir un texto de hasta 10 lineas

Publicado por anonymous (53 intervenciones) el 17/12/2019 22:16:40
Mi estimado Arturo, antes que nada debo decirte que eres un perezoso, porque no has intentado siquiera hacer algo, y este foro se está convirtiendo en un portal al que habrá que cambiarle el nombre por "Se Hacen Tareas Para Los Estudiantes Vagos"

Pero bueno allá tú y quienes obren de esa manera, porque no aprenderán nada.

Tu problema se puede resolver de muchas formas, y PHP dispone de mecanismos que hacen eso casi que de forma automática, pero me supongo que el tutor lo que busca es probar tu lógica y ver que tan recursivo eres, así que lo haremos de forma manual con ciclos.

Lo primero es limpiar la cadena, porque el usuario puede ingresar espacios en blanco en cualquier parte, alguien podría ingresar:
" En un lugar de la mancha " esos espacios en blanco los debemos eliminar con trim y replace así:
1
2
3
4
$cadena = trim($cadena); // Esto elimina espacios a izquierda y derecha
$cadena = str_replace(' ', '', $cadena); // Esto elimina los demás espacios
$cadena = strtolower($cadena); // Esto convierte la cadena en minúscula (Porque A <> a)
Luego $cadena = "enunlugardelamancha"

Recorreremos esa cadena y detectaremos solo caracteres únicos (Que no se repitan letras) y las llevaremos a otra cadena quedando:
$unicos = enulgardmch

esto lo hacemos en ciclo así:
1
2
3
4
5
6
7
8
for($i=0;$i<strlen($cadena);$i++)
{
  $pos = strpos($unicos, $cadena[$i]);
  if ($pos === false)
  {
      $unicos = $unicos.$cadena[$i];
  }
}

Luego comparamos esa cadena de únicos contra la original y comparamos carácter por carácter y vamos contando cuantas veces se repite cada uno (Fácil)

Esto último se hace mediante dos ciclos así:
1
2
3
4
5
6
7
8
9
10
11
12
13
for($i=0;$i<strlen($unicos);$i++)
{
  for($j=0;$j<strlen($cadena);$j++)
  {
      if ($unicos[$i] === $cadena[$j])
      {
         $contador=$contador+1;
      }
  }
  echo $unicos[$i].$contador;
  echo '<br>';
  $contador=0;
}

// Acá está el código completo como debe quedar, por cierto tu ejemplo dice que la a se repite 3 veces (No es cierto se repite 4)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>LetrasTexto</title>
    </head>
    <body>
        <?php
             if (!empty($_POST))
             {
                $cadena = filter_input(INPUT_POST,'taTexto');
                $cadena = trim($cadena);
                $cadena = str_replace(' ', '', $cadena);
                $cadena = strtolower($cadena);
                $unicos=NULL;
                for($i=0;$i<strlen($cadena);$i++)
                {
                  $pos = strpos($unicos, $cadena[$i]);
                  if ($pos === false)
                  {
                      $unicos = $unicos.$cadena[$i];
                  }
                }
                $unicos = trim($unicos);
 
                $final =NULL;
                $contador=0;
                for($i=0;$i<strlen($unicos);$i++)
                {
                  for($j=0;$j<strlen($cadena);$j++)
                  {
                      if ($unicos[$i] === $cadena[$j])
                      {
                         $contador=$contador+1;
                      }
                  }
                  echo $unicos[$i]." ".$contador;
                  echo '<br>';
                  $contador=0;
                }
                echo $final;
             }
 
        ?>
        <form id="LetrasTexto" name ="LetrasTexto" method="post" action="LetrasTexto.php">
            <textarea id="taTexto"
                      name="taTexto"
                      rows="10"
                      cols="20">
            </textarea>
            <br>
            <input type="submit" value="Enviar" />
 
        </form>
    </body>
</html>

// Al final te debe mostrar algo así:
e2
n3
u2
l2
g1
a4
r1
d1
m1
c1
h1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

tarea: textarea que se pueda introducir un texto de hasta 10 lineas

Publicado por Kathyu (905 intervenciones) el 18/12/2019 14:47:32
Pero usted tiene la culpa.

No veo a nadie mas "ayudando"

Siempre pregunte que tienen, que error da y todo eso. Si no lo hace para que les estrella en la cara que son flojos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar