Etusivulle

Sivun PHP-lähdekoodin näyttäminen

Alla on sivun lukutekstiksi.php PHP-lähdekoodi.


<?PHP include ("_funktiot.php"); ?>
<?PHP NaytaSivunAlku ("Ohjelma, joka näyttää luvun tekstinä"); ?>

<?PHP

// Luetaan get-parametri
$luku = "100 200 300 400 500 600 700 800";
$temp = $_GET["luk"];
if ($temp != "") $luku = $temp;

// Poistetaan muut merkit kuin numerot
$ulos = "";
for ($i = 0; $i < strlen($luku); $i++) {
	$m = substr($luku, $i, 1);
	if (substr_count("0123456789", $m) > 0) $ulos .= $m;
}
$luku = $ulos;

// Luku tuhaterottimien kanssa
$lukuerottimilla = "";
for ($i = 0; $i < strlen($luku); $i++) {
	$m = substr($luku, $i, 1);
	$lukuerottimilla .= $m;
	$temp = strlen($luku) - $i - 1;
	if ($temp % 3 == 0 && $temp > 0) $lukuerottimilla .= " ";
}

function Muodosta1_999($luku) {
	// Sisään luku väliltä 1 - 999.

	$numerot = array("", "yksi", "kaksi", "kolme", "neljä", "viisi", "kuusi", "seitsemän", "kahdeksan", "yhdeksän");

	// Luvun numerot
	$n1 = floor( $luku        / 100);
	$n2 = floor(($luku % 100) / 10);
	$n3 =        $luku % 10;

	// Sadat
	if     ($n1 == 1) { $tulos = "sata"; }
	elseif ($n1 >  1) { $tulos = $numerot[$n1] . "sataa"; }

	// Kymmenet ja ykköset
	if     ($n2 == 0)             { $tulos .= $numerot[$n3]; }
	elseif ($n2 == 1 && $n3 == 0) { $tulos .= "kymmenen"; }
	elseif ($n2 == 1)             { $tulos .= $numerot[$n3] . "toista"; }
	else                          { $tulos .= $numerot[$n2] . "kymmentä" . $numerot[$n3]; }

	return $tulos;
}

function Muodosta1_999999($luku) {
	// Sisään luku väliltä 1 - 999 999.

	// Luvun puoliskot
	$suuripuoli = floor($luku / 1000);
	$pienipuoli = $luku % 1000;

	if     ($suuripuoli == 1) { $tulos  = "tuhat "; }
	elseif ($suuripuoli >  1) { $tulos  = Muodosta1_999($suuripuoli) . "tuhatta "; }
	if     ($pienipuoli >  0) { $tulos .= Muodosta1_999($pienipuoli); }

	return trim($tulos);
}

if (strlen($luku) > 24) {
	$virhe_liiansuuri = true;

} elseif ($luku == 0) {
	$tulos = "nolla";

} else {
	// Lukusanat: yksikkömuoto, monikkomuoto, montako numeroa vie.
	// "" = miljoonaa pienempi osuus.
	$lukusanatyks = array("", "miljoona",  "miljardi",  "biljoona",  "triljoona");
	$lukusanatmon = array("", "miljoonaa", "miljardia", "biljoonaa", "triljoonaa");
	$lukusanatpit = array(6,  3,           3,           6,           6);

	// Tehdään luku etunollilla 24-numeroiseksi
	$luku = substr("000000000000000000000000" . $luku, -24);

	$tulos = "";
	$numeroitatutkittu = 0;   // luvun lopusta alkaen

	// Käydään läpi lukusanat ja näytetään, paljonko kutakin on
	for ($i = 0; $i < count($lukusanatyks); $i++) {
		$pituus = $lukusanatpit[$i];
		$numeroitatutkittu += $pituus;
		$osa = substr($luku, -$numeroitatutkittu, $pituus);

		if ($osa == 1 && $i == 0) {
			$tulos = "yksi";
		} elseif ($osa == 1) {
			$tulos = $lukusanatyks[$i] . " " . $tulos;
		} elseif ($osa >  1) {
			$tulos = Muodosta1_999999($osa) . " " . $lukusanatmon[$i] . " " . $tulos;
		}
	}

	$tulos = trim($tulos);
}

?>

Tämä ohjelma näyttää tekstinä minkä tahansa kokonaisluvun, joka on vähintään 0 ja alle kvadriljoona (10<SUP>24</SUP>).
<P>

<FORM ACTION="lukutekstiksi.php" METHOD="get">
Luku numeroina:
<BR>
<INPUT TYPE="text" NAME="luk" VALUE="<?PHP echo $lukuerottimilla; ?>" SIZE=35>
<P>
<INPUT TYPE="submit" VALUE="Näytä tekstinä">
</FORM>

<P><HR><P>

<?PHP

if ($virhe_liiansuuri) {
	echo "Virhe: luku on liian suuri.";
} else {
	echo $lukuerottimilla . " =<BR>\r\n";
	echo $tulos;
}

?>

<P>
<A HREF="_naytaphplahdekoodi.php?sivu=lukutekstiksi.php">Tämän ohjelman PHP-lähdekoodi</A>

<?PHP NaytaSivunLoppu (); ?>


Takaisin sivulle lukutekstiksi.php

Etusivulle