Häufigkeit von Wörtern in einem Text

NTDY

Erfahrenes Mitglied
Ich würde gerne einen Denkanstoß haben wollen zu folgender Problematik.

Gegeben ist ein beliebiger Text (Stopzeichen ist ein Freizeichen). Jedes Wort im Text ist in einem Arrayfeld gespeichert. Nun soll eine Selbstanalyse über diesem Text stattfinden der eine Auswertung macht, welche Wörter im Text am meisten vorhanden sind. Beispiel:

Die 6 häufigsten Wörter im folgenden Text:

Code:
So gefällst du mir. 
Wir werden, hoff ich, uns vertragen; 
Denn dir die Grillen zu verjagen, 
Bin ich als edler Junker hier, 
In rotem, goldverbrämtem Kleide, 
Das Mäntelchen von starrer Seide, 
Die Hahnenfeder auf dem Hut, 
Mit einem langen, spitzen Degen, 
Und rate nun dir, kurz und gut, 
Dergleichen gleichfalls anzulegen; 
Damit du, losgebunden, frei, 
Erfahrest, was das Leben sei.

Wortanzahl im Text: 60 (Arrayfeld 0-59)

Die häufigsten Wörter:
Code:
ich	3x	5%
dir	2x	3%
das	2x	3%
die	2x	3%
du	2x	3%
und	2x	3%

Hat jemand eine Idee wie man dies in PHP realisieren kann/könnte?

Beste Grüße
 
PHP:
$words = preg_split('/[,.;\x0A\x0D\x20]+/', strtolower($str));
$words = array_count_values($words);
 
Besten Dank Gumbo.

Für alle, die einen fertigen Beispielcode benötigen, hier ein Beispiel.
PHP:
<?php
$array= array("so","gefällst","du","mir","wir","werden","hoff","ich","uns",
"vertragen","denn","dir","die","grillen","zu","verjagen","bin","ich","als",
"edler","junker","hier","in","rotem","goldverbrämtem","kleide,","das",
"mäntelchen","von","starrer","Seide","die","hahnenfeder","auf","dem",
"hut","mit","einem","langen","spitzen","degen","und","rate","nun","dir",
"kurz","und","gut","dergleichen","gleichfalls","anzulegen","damit","du",
"losgebunden","frei","erfahrest","was","das","leben","sei");

foreach($array as $a => $b){
	$array_tmp[] = strtolower($b);
}
	$words = array_count_values($array_tmp);  

echo "<pre>";
print_r($words);
echo "</pre>";
?>

Ich würde noch gern wissen, was:
PHP:
preg_split('/[,.;\x0A\x0D\x20]+/')
bedeutet.
 
Regulärer Ausdrück, der anhand von folgenden Zeichen trennt:
\x0a = \n
\x0d = \r
\x20 = Leerzeichen

Statt [phpf]foreach[/phpf] würde ich in diesem Fall [phpf]array_map[/phpf] verwenden.
 

Neue Beiträge

Zurück