Partiendo de un texto cualquiera, asignado a una variable, el código crea un listado con las palabras más frecuentes.
¿Qué necesito? .- Sacar el listado de las palabras frecuentes separadas por comas fuera del foreach para añadir dicho listado a un campo MySQL
¿Alguna idea?
Código PHP:
<?php
$texto = "Cuando se reconosció el armada del Turco, en la dicha batalla naval, el dicho Miguel de Cervantes
estaba malo y con calentura, y el dicho capitán... y otros muchos amigos suyos le dijeron que, pues estaba enfermo
y con calentura, que estuviese quedo abajo en la cámara de la galera; y el dicho Miguel de Cervantes respondió que
qué dirían dél, y que no hacía lo que debía, y que más quería morir peleando por Dios y por su rey, que no meterse
so cubierta, y que con su salud... Y peleó como valente soldado con los dichos turcos en la dicha batalla en el lugar
del esquife, como su capitán lo mandó y le dio orden, con otros soldados. Y acabada la batalla, como el señor don Juan
supo y entendió cuán bien lo había hecho y peleado el dicho Miguel de Cervantes, le acrescentó y le dio cuatro ducados
más de su paga... De la dicha batalla naval salió herido de dos arcabuzazos en el pecho y en una mano, de que quedó
estropeado de la dicha mano.";
// str_word_count 0 - cuenta la cantidad de palabras de la cadena
$cuenta_palabras=str_word_count($texto);
// str_word_count 1- formar un array con las palabras
$array_palabras=array($texto);
// strlen — Obtiene la longitud de la cadena
$v=strlen($texto);
$frecuencia = array_count_values( str_word_count( $texto, 1) );
arsort ($frecuencia);
foreach( $frecuencia as $F => $value ) {
// Creo que es la formula para la densidad de palabras...¿ :) ?
$densidad = round( ($value * 100) / ($cuenta_palabras) );
// trim — Elimina espacios en blanco (u otros caracteres) del principio y final de una cadena
$palabra_frecuente=trim($F);
// Excluir palabras poco frecuentes, en este caso inferiores a 2
if($value >=2){
// Obtener la longitud de la cadena de frecuencia
$long=strlen($F);
// Excluir palabras con longitud de frecuencia inferior a 5
if($long >= 5){
// Resaltar
$texto = str_replace( "$palabra_frecuente", "<span style='background-color: #FF9933'>$palabra_frecuente</span>" , $texto);
echo"<ul><li><strong><span style='background-color: #FFFF00'>".$palabra_frecuente."</span></strong> - Frecuencia: ".$value." - Densidad: ".$densidad."% </li></ul> \n";
}
}
}
#### Necesito listar las palabras frecuentes ($palabra_frecuente) separadas por comas fuera de foreach
#### Con el proposito de alamcenar dicho listado en un campo de una tabla MySQL
print "<p>".$texto."</p>" ;
?>