Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Kirjainten esiintymistiheys

nlampola [26.10.2004 21:28:42]

#

Melko yksinkertainen koodi, joka laskee kirjaimien määrän sekä kertoo niiden osuuden koko tekstistä.

Esimerkki löytyy osoitteesta:
http://koti.mbnet.fi/xmore/kirjainten_esiintymistiheys.php

<?php

	#################################
	#  Kirjainten esiintymistiheys  #
	#    Nikolai Lampola 2004       #
	#    nlampola@gmail.com         #
	#################################

	//Alla olevaan se tekstinpätkä, voidaan tietenkin ottaa myös $_GETistä tai $_POSTista, soveltakaa tilanteen mukaan
	$oteksti = "Ohjelmointiputka on suomenkielinen Internet-sivusto, joka aloitti toimintansa vuoden 2002 alussa. Sivustolla on monipuolinen valikoima ohjelmointiin liittyviä oppaita ja koodivinkkejä sekä vilkas keskustelualue. Aika ajoin järjestetään myös erilaisia ohjelmointikilpailuja.";

	//Otetaan tekstistä pois kaikki erikoismerkit
	$teksti = preg_replace("/[^a-zA-ZåäöÅÄÖ]/",NULL,$oteksti);

	//Lasketaan kirjainten määrät
	$kirjaimet = array();
	for ($i = 0; $i <= strlen($teksti); $i++) { $kirjaimet[strtolower($teksti[$i])]++; }
	$keys = array_keys($kirjaimet);

	//Sortataan lopuksi suurimmasta pienimpään
	asort($kirjaimet,SORT_NUMERIC);
	$kirjaimet = array_reverse($kirjaimet);

	//Ja tulostetaan, myös prosentit mukaan
	echo "<b>Teksti:</b><br>".$oteksti."<br><br><b><table border='1'><tr><td>Kirjain</td><td>Kirjaimien määrä</td><td>Prosentteina koko tekstistä</td></tr>";
	$i = -1;
	foreach ($kirjaimet as $kirjain)
	{
		$i++;
		if ($keys[$i] == '') {continue;} //Jos sattuu tulemaan tyhjä merkki

		// yhden kirjaimen määrä / kaikkien merkkien määrällä * 100
		echo "<tr><td><b>".strtoupper($keys[$i])."</b></td><td>{$kirjain}</td><td>".round($kirjain/strlen($teksti)*100,1)." %</td></tr>";
	}
	echo "</table><br>";

?>

ZcMander [30.10.2004 16:00:03]

#

Numerot ja erikokoset kirjaimet puuttu, sekä miksi ä ja ö on pienellä?

nlampola [30.10.2004 16:07:38]

#

lainaus:

Numerot ja erikokoset kirjaimet puuttu, sekä miksi ä ja ö on pienellä?

Numerot saa näin

$teksti = preg_replace("/[^0-9a-zA-ZåäöÅÄÖ]/",NULL,$oteksti);

Mitä tarkoitat erikokoisilla merkeillä? Tai tolla ä:n ja ö:n pienellä ololla?

SysRq868 [02.11.2004 18:09:23]

#

hmm... Tuo esimerkki väittää tekstissä olevan 2 ä:tä, vaikka uskaltaisin väittää, että "järjestetään" sisältää 3 ä:tä, ja muuallahan noita ei ole.

adu-san [06.11.2004 13:06:44]

#

Tuota noin... eiköhän sanassa "koodivinkkejä" esiinny ainakin yksi ä-kirjain...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta