Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pan Tadeusz - najczęściej występujące słowa
Forum PHP.pl > Forum > Przedszkole
kra1986
Wie ktoś może jak poradzić sobie z następującym problemem:

Jest plik.txt np "Pan Tadeusz", za zadanie mam napisać skrypt wyświetlający 10 najczęściej występujących słów, i posortować je wg kolejności wystąpień słów snitch.gif


Za pomoc z góry dziękuje winksmiley.jpg
Maksior
Proponuje skorzystać na początek z funkcji explode, a potem przeszukać np tablice. Problem w tym, że ten skrypt może być nie efektywny.
MateuszS
potwornie sie nudze w ten ostatni dzien ferii

  1. <?
  2.  
  3. function policzWystapienia($plik) {
  4.  
  5. $otworz = fopen($plik, "r");
  6. if(!$otworz) exit("Blad odczytu pliku ".$plik);
  7. $tekst = fread($otworz, filesize($plik));
  8. $znaki = array(",",".","?","!",":",";","(",")","+","-");
  9. $ile = count($znaki);
  10. $tekst=str_replace(" ","", strtolower($tekst));
  11. for($i=0; $i<$ile; $i++) {
  12. $tekst = str_replace($znaki[$i], "", $tekst);
  13. }
  14. $dziel = explode(" ", $tekst);
  15. $wyrazy = array();
  16. $ile=count($dziel);
  17. for($i=0; $i<$ile; $i++) {
  18. if(!in_array($dziel[$i], $wyrazy)) {
  19. array_push($wyrazy, $dziel[$i]);
  20. $zliczone[$dziel[$i]] = 1;
  21. } else {
  22. $zliczone[$dziel[$i]]++;
  23. }
  24. }
  25.  
  26. arsort($zliczone);
  27. return $zliczone;
  28. }
  29.  
  30.  
  31. $plik = "tekst.txt";
  32. $zliczone = policzWystapienia($plik);
  33. foreach($zliczone as $wyraz=>$wystapien) {
  34. echo $wyraz. "=>". $wystapien. "<br />";
  35. }
  36.  
  37. ?>


Pewnie da sie tu zaimplementowac jakies fajne funkcje PHP, wyrażenia regularne itp. ale ja tego nie robiłem ;P
Wicepsik
  1. $znaki = array(",",".","?","!",":",";","(",")","+","-", "\n", "\r\n");
  2. $tekst = str_replace($znaki, ' ', strtolower(file_get_contents('tekst.txt')));
  3. $tekst = explode(' ', $tekst);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.