Cloud
Wortansammlung nach Vorkommen
Eine cloud (Wolke) zeigt die am häuffigsten verwendeten Worte in einem Artikel, einer Seite, einer Site oder in einer Datenbank. Die gefundenen Worte werden natürlich noch gesiebt und gefiltert und entsprechend ihrer Häuffigkeit grösser oder fetter ausgegeben. Dieses Beispiel sucht in einer Datenbank und zeigt Methoden zur Analyse von Arrays.
Für das folgende Beispiel wurden die Fragen aus www.1000fragen.ch analysiert.
Ich habe 64 Worte gefunden, die länger als 5 Buchstaben sind und mehr als 5 mal vorkommen. Es werden maximal 70 solcher Worte angezeigt.
Das Cloud-Script habe ich im Aiom Wiki gefunden, angepasst und mit Kommentaren versehen. (Danke)
Datenbank abfragen
mysql_query(), mysql_fetch_array()
<?php
// mit Datenbank verbinden
include ("pfad/ordner/datenbankverbindung.php");
// Datenbank Abfrage
$abfrage = "SELECT kolonne1,kolonne2 FROM tabelle";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_array ($result))
{
$data[] = $row['kolonne1']." ".$row['kolonne2']; // Leerschlag einfügen
}
?>
Array analysieren
implode(), preg_split(), array_count_values(), array_search()
Sammeln, zählen, filtern und sortieren
<?php
// aus dem Array einen String erstellen, der Kitt ist ein Leerschlag
$data = implode(' ',$data);
//die Zeichenkette bei Komma, Fragezeichen, Whitespaces erneut in einen Array zerlegen
$words = preg_split("/[\,\s?]+/", $data);
// gleiche Worte zählen, es entsteht ein assoziativer Array,
// dessen Key ist das Wort der Value ist die Anzahl
$acv = array_count_values( $words );
// Array mit gebannten Worten erstellen
$bannedwords = array("Können", "Können", "Könnte", "Könnte");
foreach($acv as $k=>$v)
{
// Parameter einstellen:
// $k ist das Wort, $v ist die Anzahl seines Vorkommens
// wenn das Wort nicht gebannt wurde und es nur aus Buchstaben besteht und versal beginnt,
// und die Wortlänge grösser als 5 Buchstaben ist und es mehr als 5 mal vorkommt
if (!array_search($k,$bannedwords) && eregi("[a-zA-Z]",$k)
&& ereg("[A-Z]",$k[0]) && strlen($k)>5 && $v>5)
{
if (isset($new_acv[$k] ))
$new_acv[$k] += $v;
else
$new_acv[$k] = $v;
$i++;
}
}
// Alphabetisch sortieren
ksort( $new_acv );
?>
Wolke erstellen
foreach(), break;
Formatieren, funktionalisieren, ausgeben, zählen, stoppen. Normalerweise würde den Links eine Variable angehängt deren Auswertung zum Wortursprung führen würde, im Beispiel führen die Links einfach zur Website.
<?php
$ii = 0; // Anzahl bisher ausgegebener Worte
foreach( $new_acv as $k=>$v) {
if ($v > 4) { $size = 0.8;
$weight = 100; }
if ($v > 5) { $size = 1;
$weight = 100; }
if ($v > 6) { $size = 1.3;
$weight = 250; }
if ($v > 8) { $size = 1.6;
$weight = 300; }
if ($v > 12) { $size = 2.2;
$weight = 400; }
if ($v > 15) { $size = 2.5;
$weight = 600; }
if ($v > 20) { $size = 3.5;
$weight = 800; }
$kurl = urlencode("$k");
echo "<a href=\"http://www.1000fragen.ch?wort=$kurl\" target='_blank'
style='font-size: {$size}em; font-weight: {$weight}; color:grey'>$k</a> ";
$ii++; // zählen
if ($ii == 70) break; // Beschränkung auf 70 Worte, Schleife verlassen
}
?>