Como crear una nube de tags en PHP

Estándar

En este artículo explicaremos como crear una nube de tags en PHP usando la clase wordcloud.class.php (vía Del Harvey en Lots of code ), las palabras clave las sacaremos de un texto de la web que podamos leer en PHP, por ejemplo al crear un listado desde una base de datos.

En primer lugar debemos descargarnos el archivo zip con las clases y css para poder usarlos en nuestros scripts, podeis hacerlo pulsando en el siguiente enlace: tag_cloud.zip

Una vez descargado debemos descomprimirlo y subirlo  nuestro servidor web, la ruta es importante para luego hacer los includes correspondientes en nuestro código.

Abrimos nuestra página PHP e incluimos la orden para leer la clase que nos generara la nube de tags:

require (“includes/wordcloud.class.php”);

a continuacion debemos estudiar nuestro codigo y ver de donde sacaremos todas las palabras clave que queremos usar para crear la nube de tags, en nuestro caso lo que hacemos es guardar en una variable string todo el texto que luego queremos usar para crear la nube.

Para rellenar el string lo hacemos en el bucle while del cual estamos leyendo los textos que mostramos en la web, luego crearemos un array con las palabras del string usando la orden explode:

<?

$cadena=””;

while($row=mysql_fetch_assoc($result)){

$cadena=$cadena.’ ‘.$row[texto];  //en esta linea vamos rellenando el string

?>

//mostramos texto html

<?

}

$array_texto= explode(” “, $cadena);

//creamos el array con la orden explode

 

una vez creado el array ya podemos usar la clase para crear la nube de tags, para ello primero invocamos para crear el objeto $cloud

$cloud = new wordCloud();

con el metodo addWord vamos añadiendo todas las palabras del array recorriendolo usando un bucle for

for($i=0;$i<count($array_texto);$i++){

$cloud->addWord($array_texto[$i]);

}

con el metodo removeWord, quitamos las palabras clave que no nos interesen para la nube de tags (preposiciones,

$cloud->removeWord(‘por’);

$cloud->removeWord(‘de’);

$cloud->removeWord(‘antes’);

$cloud->removeWord(‘asi’);

Ahora definimos como se va a generar la nube de tags, si queremos ordenar por tamaño de palabra de forma descendente:

$cloud->orderBy(‘size’, ‘desc’);

para que la nube de tags no se haga infinita le ponemos un limite de 20 palabras:

$cloud->setLimit(20);

Ya solo nos falta mostrarla con la orden showCloud()

echo $cloud->showCloud();

?>

En nuestro caso usamos nuestro propio css, pero podemos usar los que vienen junto a la clase php.

Un punto importante a tener en cuenta es que debemos crear un array para poder añadir las palabras a la clase que generara la nube de tags.

 

Deja un comentario con tu opinion sobre el post y si te ha servido para tus desarrollos.

 

 

 

2 comentarios en “Como crear una nube de tags en PHP

  1. Me respondo yo mismo al anterior comentario, para arreglar el tema de los acentos y ñ hay que modificar el método formatWord y en el preg_replace añadir los carácteres raros, en mi caso lo he dejado así:

    return preg_replace(‘/[^a-zA-ZáéíóúÁÉÍÓÚñÑ ]/’, ”, strip_tags($string));

Deja un comentario

Tu dirección de correo electrónico no será publicada.