Suche nach als

Cloud

Auf dieser Seite:

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&ouml;nnen""K&ouml;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)>&& $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
}
?>


Valid XHTML 1.0 Check den Code.

MySQL: >> << Verzeichnis Baum
Ich bin hier: > PHP Lehrling >>> Cloud
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 14.08.2010