Estadísticas del código: Numero de repeticiones de palabras de un texto o cadena ordenadas de mayor a menor - PHP

Imágen de perfil
Val: 2.949
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Numero de repeticiones de palabras de un texto o cadena ordenadas de mayor a menor


PHP

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 5 de Diciembre del 2016 por Kip
1.740 visualizaciones desde el 5 de Diciembre del 2016
Función que recibe un texto o cadena y retorna un array con elementos cuyo valor de cada uno es el numero de repeticiones de la palabra y como indice la palabra en cuestion, ordenados de mayor a menor, ejemplo:

Texto
1
2
3
4
5
6
7
8
9
10
11
12
$texto = "-Me tomaron y me encerraron solo en lo más alto de Orthanc, en el sitio
donde Saruman acostumbraba mirar las estrellas. No hay otro modo de
descender que por una estrecha escalera de muchos miles de escalones y
parece que el valle estuviera muy lejos allá abajo. Lo miré y vi que la hierba y
la hermosura de otro tiempo habían desaparecido y que ahora había allí pozos
y fraguas. Lobos y orcos habitaban en Isengard, pues Saruman estaba
alistando una gran fuerza y emulando a Sauron, aún no a su servicio. Sobre
todas aquellas fraguas flotaba un humo oscuro que se apretaba contra los
flancos de Orthanc. Yo estaba solo en una isla rodeada de nubes; no tenía
ninguna posibilidad de escapar y mis días eran de amargura. Me sentía
traspasado de frío y tenía poco espacio para moverme y me pasaba las horas
cavilando sobre la llegada de los Jinetes del Norte.";

1
print_r(countWords($texto));

Resultado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Array
(
    [y] => 11
    [de] => 11
    [que] => 5
    [me] => 4
    [en] => 4
    [la] => 3
    [una] => 3
    [no] => 3
    [las] => 2
    [estaba] => 2
    [sobre] => 2
    [fraguas] => 2
    [los] => 2
    [tenía] => 2
    [otro] => 2
    [a] => 2
    [lo] => 2
    [saruman] => 2
    ......
    ......

Como podemos ver, trae como resultado las palabras y asi mismo las que muchas veces no se consideran palabras como 'y', 'de'..... Para estos casos es posible enviarle parametros a la funcion para poder aplicar ciertos filtros, la funcion recibe ademas del texto 3 parámetros:

Número de palabras a retornar en el array del resultado
Un entero que indicara que numero de palabras podra retornar la funcion, sirven para retornar un numero especifico de las palabras con mayor numero de repeticiones

1
print_r(countWords($texto, 1));
1
2
3
4
Array
(
    [y] => 11
)

Número de caracteres que deben tener la palabra para poder ser evaluada
Un entero que indicara que numero de caracteres debe tener como mínimo una palabra para ser tomada en cuenta y obtenerla en el resultado

1
print_r(countWords($texto, 1, 2));
1
2
3
4
Array
(
    [de] => 11
)

Cadena o array de subcadenas que no deben ser tomadas en cuenta en el resultado
1
print_r(countWords($texto, 1, 2, 'y de'));
1
2
3
4
Array
(
    [que] => 5
)

1
print_r(countWords($texto, 1, 2, array('y', 'de')));
1
2
3
4
Array
(
    [que] => 5
)

Si deseas ir directamente a un solo parametro, por ejemplo este ultimo, puedes hacer lo siguiente:

1
print_r(countWords($texto, '', '', array('y', 'de')));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [que] => 5
    [me] => 4
    [en] => 4
    [la] => 3
    [una] => 3
    [no] => 3
    [las] => 2
    [estaba] => 2
    [sobre] => 2
    [fraguas] => 2
    [los] => 2
    [tenía] => 2
    [otro] => 2
    [a] => 2
    [lo] => 2
    [saruman] => 2
    .....
    .....

Con el array de resultados puedes hacer lo que desees, por ejemplo:

1
2
3
4
5
$array_resultados = countWords($texto, '', '', array('y', 'de'));
foreach ($array_resultados as $palabra => $numero) {
    $pl = $numero > 1 ? 'ces' : 'z' ;
    echo "La palabra '{$palabra}' se repite {$numero} ve{$pl} en el texto\n";
}
1
2
3
4
5
6
7
8
La palabra 'que' se repite 5 veces en el texto
La palabra 'me' se repite 4 veces en el texto
La palabra 'en' se repite 4 veces en el texto
La palabra 'la' se repite 3 veces en el texto
La palabra 'una' se repite 3 veces en el texto
La palabra 'no' se repite 3 veces en el texto
La palabra 'las' se repite 2 veces en el texto
La palabra 'estaba' se repite 2 veces en el texto......

Espero les sirva.

53 visualizaciones durante los últimos 50 días


6
0