Tag Cloud en PHP
Eduardo Miércoles 21 de julio del 2010

Necesitaba hoy de un tag cloud sencillo en php y encontré muchos ejemplos que no se me hicieron muy buenos, así que programé uno. Se los dejo para que lo usen:
/**
$wordlist en la forma array('palabra1' => array('numero' => 5), 'palabra2' => array('numero' => 3))
*/
function tagCloud($wordlist, $fmax) {
//esto sive para que el tamaño minimo de la letra sea 10px
if($fmax < 20) {
$fmax = 10;
} else {
$fmax -= 10;
}
//primera recorrida para obtener el maximo y el minimo
$tmin = 0;
$tmax = 0;
foreach($wordlist as $key => $value) {
if($value['numero'] > $tmax || $tmax == 0)
$tmax = $value['numero'];
if($value['numero'] < $tmin || $tmin == 0)
$tmin = $value['numero'];
}
foreach($wordlist as $key => $value) {
if($value['numero'] > $tmin) {
$si = ceil(($fmax * ($value['numero'] - $tmin) / ($tmax - $tmin)))+10;
} else {
$si = 10;
}
$wordlist[$key]['size'] = $si;
}
return $wordlist;
}
Su uso es bastante sencillo. Tenemos que meter todos los elementos a un array de la siguiente forma:
$wordlist = array('palabra1' => array('numero' => 5), 'palabra2' => array('numero' => 3));
//30 es el tamaño máximo de la letra
$wordlist = tagCloud($wordlist, 30);
foreach($wordlist as $key => $value) {
echo '<span style="font-size: '.$value['size'].'px;">'.$key.'</span> ';
}
Nótese que en el array podemos meter los valores que queramos y que necesitemos, sólo debe estar presente la llave llamada numero.
Me basé en el artículo de wikipedia: http://en.wikipedia.org/wiki/Tag_cloud






