Diskussion: Tag-Cloud erstellen

Ayom-Team

Angesehenes Mitglied
Diskussion zum Artikel Tag-Cloud erstellen
in der Kategorie
PHP, Mysql & Apache

Tag-Cloud (auch Wordwolke genannt) werden immmer populärer im Internet. Hier ein einfaches PHP-Script, wo wir aus einer Mysql-DB 3 Felder auslesen und eine Wordwolke erstellen.
CODE $abfrage = "SELECT interessen, interessen2, interessen3 FROM tabelle";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_array ($result))
{
$data[] = $row['interessen']."n".$row['interessen2']."n".$row['interessen3'];
}

$data = implode('',$data);

// Woerter splitten
$words = preg_split("/n/", $data);
$acv = array_count_values( $words );

// Nicht erwuenschte Woerter loeschen
$bannedwords = array('');
$i = 0;
foreach($acv as $k=>$v) {
if (!array_search(strtolower($k),$bannedwords) and eregi("[a-zA-Z]",$k) and $i<=40 and strlen($k)>2) {
if (isset($new_acv[strtolower($k)] ))
$new_acv[strtolower($k)] += $v;
else
$new_acv[strtolower($k)] = $v;
$i++;
}
}

// Alphabetisch sortieren
ksort( $new_acv );

// Clouds erstellen
foreach( $new_acv as $k=>$v) {
$size = $v*1;
$weight = $v*4;

if ($size > 4) $size = 4;
if ($weight > 50) $weight = 50;

$kurl = urlencode("$k");
echo "<a href=\"suche.php?q=$kurl\" style=\"font-size: {$size}em; font-weight: {$weight}\">$k</a> ";
}

Interessante Links zum Thema:
http://de.wikipedia.org/wiki/Tag_cloud

Diskussionen:
Thema:
PHP:
 Tag-Cloud Script

-------------------
Dieser Artikel steht unter der [URL="http://creativecommons.org/licenses/by-nd/2.0/"]Creative Commons Lizenz[/URL].
 
Hallo habe gerade versucht das ganze für WBB2 zu adaptieren, bekomme aber immer nur eine seltsame Aussage.

Hier der Code:

CODE <?php
$filename = "cloud.php";
require('./global.php');

$abfrage = "SELECT * FROM bb1_jgs_ref ORDER BY date ASC";
//Beispiel: http://www.google.de/search?hl=de&q=ALPHA+PRIME+KEIN+WAFFENSOUND&meta=
$result = mysql_query($abfrage);
while ($row = mysql_fetch_array ($result))
{
$data[] = $row['logged_url'];
$l = trim($fp, 1024);
if(preg_match('#q=(.*)["|&].*" ".*"#U', $l, $o)) if(substr(trim(urldecode($o[1])), 0, 6) != 'cache:' AND trim(urldecode($o[1])) != '') $s[preg_replace('|\s+|', ' ', preg_replace('|[^a-zäöüß0-9\.\"\+\-\=\?]|', ' ', strtolower(trim(utf8_decode(urldecode(rawurldecode($o[1])))))))]++;
}


// Woerter splitten
$words = preg_split("/n/", $s);
$acv = array_count_values( $words );

// Nicht erwuenschte Woerter loeschen
$bannedwords = array('');
$i = 0;
foreach($acv as $k=>$v) {
if (!array_search(strtolower($k),$bannedwords) and eregi("[a-zA-Z]",$k) and $i<=40 and strlen($k)>2) {
if (isset($new_acv[strtolower($k)] ))
$new_acv[strtolower($k)] += $v;
else
$new_acv[strtolower($k)] = $v;
$i++;
}
}

// Alphabetisch sortieren
ksort( $new_acv );

// Clouds erstellen
foreach( $new_acv as $k=>$v) {
$size = $v*1;
$weight = $v*4;
$n = $acv[key($acv)] - end($acv);

if ($size > 4) $size = 4;
if ($weight > 50) $weight = 50;
$size2col = array(8=>'#90a5b2', 9=>'#87a0b0', 10=>'#7e9bae', 11=>'#7596ac', 12=>'#6b92aa', 13=>'#628da8', 14=>'#5988a6', 15=>'#5083a4', 16=>'#477ea3', 17=>'#3e79a1', 18=>'#35749f', 19=>'#2c6f9d', 20=>'#226b9b', 21=>'#196699', 22=>'#106197', 23=>'#075c95');

$c .= '<a href="http://www.google.de/search?q='.urlencode($k).'" style="color: '.$size2col[(round((15*$v)/$n)+10)].'; font-size: '.(round((15* $v)/$n)+10).'pt;">'.htmlentities($k)."</a> \n";
}

eval("\$tpl->output(\"".$tpl->get("cloud")."\");");
?>


Das ergebnis ist "ZSearch"
Mein Ziel wären aber die Tags aus der Beispielzeile: ALPHA, PRIME, KEIN, WAFFENSOUND

Hoffe jemand kann mir helfen.

Gruß

Micromac
 
Zurück
Oben