$rivi) { if ( substr_count("¤" . $rivi, "¤*** START OF THIS PROJECT GUTENBERG EBOOK ") > 0 || substr_count("¤" . $rivi, "¤*** START OF THE PROJECT GUTENBERG EBOOK ") > 0 || substr_count("¤" . $rivi, "¤***START OF THE PROJECT GUTENBERG EBOOK ") > 0 ) { $alkurivi = $avain; break; } } if ($alkurivi == -1) { echo "Virhe: tiedostosta " . $tiednimi . " ei löytynyt alkuriviä."; die(); } // Etsitään loppurivi $loppurivi = -1; foreach ($tiedosto as $avain => $rivi) { if ( substr_count("¤" . $rivi, "¤*** END OF THIS PROJECT GUTENBERG EBOOK ") > 0 || substr_count("¤" . $rivi, "¤*** END OF THE PROJECT GUTENBERG EBOOK ") > 0 || substr_count("¤" . $rivi, "¤***END OF THE PROJECT GUTENBERG EBOOK ") > 0 ) { $loppurivi = $avain; break; } } if ($loppurivi == -1) { echo "Virhe: tiedostosta " . $tiednimi . " ei löytynyt loppuriviä."; die(); } // Poistetaan tiedostosta alku- ja lopputekstit $tiedosto = array_slice($tiedosto, $alkurivi + 1, $loppurivi - $alkurivi - 1); // Käydään tiedoston rivit läpi foreach ($tiedosto as $rivi) { $rivi = mb_strtolower($rivi); // Käydään rivin merkit läpi for ($i = 0; $i < strlen($rivi); $i++) { $merkki = substr($rivi, $i, 1); // Kootaan merkit sanoiksi if (substr_count($aakkoset, $merkki) > 0) { $nyksana .= $merkki; } elseif ($nyksana != "") { $sanat[] = $nyksana; $nyksana = ""; } } // Rivin viimeinen sana if ($nyksana != "") { $sanat[] = $nyksana; $nyksana = ""; } } } // Eri sanat $temp = array_count_values($sanat); $erisanat = array_keys($temp); $erisanojenmaarat = array_values($temp); array_multisort ($erisanojenmaarat, SORT_DESC, $erisanat); // Yksittäiset kirjaimet $erikirjaimet = array(); $erikirjaintenmaarat = array(); for ($i = 0; $i < count($erisanat); $i++) { $sana = $erisanat[$i]; $sananmaara = $erisanojenmaarat[$i]; for ($i2 = 0; $i2 < strlen($sana); $i2++) { $kirjain = substr($sana, $i2, 1); $haku = array_search($kirjain, $erikirjaimet); if ($haku === false) { $erikirjaimet[] = $kirjain; $erikirjaintenmaarat[] = $sananmaara; } else { $erikirjaintenmaarat[$haku] += $sananmaara; } } } array_multisort ($erikirjaintenmaarat, SORT_DESC, $erikirjaimet); // Kahden kirjaimen yhdistelmät $erikirjain2yhdistelmat = array(); $erikirjain2yhdistelmienmaarat = array(); for ($i = 0; $i < count($erisanat); $i++) { $sana = $erisanat[$i]; $sananmaara = $erisanojenmaarat[$i]; for ($i2 = 0; $i2 < strlen($sana) - 1; $i2++) { $kirjainyhdistelma = substr($sana, $i2, 2); $haku = array_search($kirjainyhdistelma, $erikirjain2yhdistelmat); if ($haku === false) { $erikirjain2yhdistelmat[] = $kirjainyhdistelma; $erikirjain2yhdistelmienmaarat[] = $sananmaara; } else { $erikirjain2yhdistelmienmaarat[$haku] += $sananmaara; } } } array_multisort ($erikirjain2yhdistelmienmaarat, SORT_DESC, $erikirjain2yhdistelmat); // Kolmen kirjaimen yhdistelmät $erikirjain3yhdistelmat = array(); $erikirjain3yhdistelmienmaarat = array(); for ($i = 0; $i < count($erisanat); $i++) { $sana = $erisanat[$i]; $sananmaara = $erisanojenmaarat[$i]; for ($i2 = 0; $i2 < strlen($sana) - 2; $i2++) { $kirjainyhdistelma = substr($sana, $i2, 3); $haku = array_search($kirjainyhdistelma, $erikirjain3yhdistelmat); if ($haku === false) { $erikirjain3yhdistelmat[] = $kirjainyhdistelma; $erikirjain3yhdistelmienmaarat[] = $sananmaara; } else { $erikirjain3yhdistelmienmaarat[$haku] += $sananmaara; } } } array_multisort ($erikirjain3yhdistelmienmaarat, SORT_DESC, $erikirjain3yhdistelmat); // Tulostus echo "Kirjoja: " . count($tiednimet) . " kpl.\r\n"; echo "Sanoja: " . count($sanat) . " kpl.\r\n"; echo "Eri sanoja: " . count($erisanat) . " kpl.\r\n"; echo "\r\n"; echo "=== Eri sanat yleisimmästä harvinaisimpaan ja niiden määrät ===\r\n"; echo "\r\n"; for ($i = 0; $i < count($erisanat); $i++) { echo $erisanat[$i] . "\t" . $erisanojenmaarat[$i] . "\r\n"; } echo "\r\n"; echo "=== Kirjaimet yleisimmästä harvinaisimpaan ja niiden määrät ===\r\n"; echo "\r\n"; for ($i = 0; $i < count($erikirjaimet); $i++) { echo $erikirjaimet[$i] . "\t" . $erikirjaintenmaarat[$i] . "\r\n"; } echo "\r\n"; echo "=== Kahden kirjaimen yhdistelmät yleisimmästä harvinaisimpaan ja niiden määrät ===\r\n"; echo "\r\n"; for ($i = 0; $i < count($erikirjain2yhdistelmat); $i++) { echo $erikirjain2yhdistelmat[$i] . "\t" . $erikirjain2yhdistelmienmaarat[$i] . "\r\n"; } echo "\r\n"; echo "=== Kolmen kirjaimen yhdistelmät yleisimmästä harvinaisimpaan ja niiden määrät ===\r\n"; echo "\r\n"; for ($i = 0; $i < count($erikirjain3yhdistelmat); $i++) { echo $erikirjain3yhdistelmat[$i] . "\t" . $erikirjain3yhdistelmienmaarat[$i] . "\r\n"; } ?>