Scripts

Nummer naar woord-nummer

ik verveelde me een tijdje geleden, dus ik ben een nogal zinloos script gaan maken, ik weet dat het niet heel netjes is geprogrammeerd, en dr zitten nog een paar foutjes in, maargoed. het script maakt van een nummer de uitgeschreven string.. dus bijvoorbeeld: 12 -> twaalf 1245 -> duizendtweehondervijfenveertig

nummer-naar-woordnummer
[code]<form action="num2string.php" method="post">
    Nummer:  <input type="text" name="nummer" /><br />
    <input type="submit" name="submit" value="submit" />
</form>
<br />
<br />
<?php
if ( isset($_POST['nummer']) && (is_numeric($_POST['nummer'])) ) {
	echo num2string($_POST['nummer']);
}
function num2string($num, $nul = "true"){
	//converteert een getal naar een string
	//bijvoorbeeld: 1234 -> duizendtweehonderdvierendertig
	//gebruik: num2string(getal *int*) 
	//maker: huib keemink ([email protected])

	//de variabelen

	$eenheden=array(0=>'nul',1=>'een',2=>'twee',3=>'drie',4=>'vier',5=>'vijf',6=>'zes',7=>'zeven',8=>'acht',9=>'negen');
	$tienvoegsels=array(0=>'tien',1=>'elf',2=>'twaalf',3=>'dertien',4=>'veertien');
	$tientallen=array(1=>'tien',2=>'twintig',3=>'dertig',4=>'veertig',5=>'vijftig',6=>'zestig',7=>'zeventig',8=>'tachtig',9=>'negentig');
	//om getallen als: 1000 er als duizend en niet als duizendnul uit te laten komen.	
	if (($num > 0) || (($nul == "true") && ($num == 0))){
		//anders kan je de variabele niet als een array gebruiken
		$nummer = ''.$num;
		//stringlengte, spreekt voor zich lijkt me
		if (strlen($num) == 1){
			$return = $eenheden[$nummer[0]];
		}
		elseif (strlen($num) == 2){
			//anders zou een getal als 02 er uitkomen als "2en".
			if ($nummer[0] == 0){
				$return = $eenheden[$nummer[1]];
			}
			elseif ($nummer[0] == 1){
				if ($nummer[1] < 5){
					$return =  $tienvoegsels[$nummer[1]];
				}
				else
				{
					$return =  $eenheden[$nummer[1]].$tientallen[$nummer[0]];
				}
			}
			else
			{
				if ($nummer[1]){
					$return = $eenheden[$nummer[1]]."en".$tientallen[$nummer[0]];
				}
				else
				{
					$return = $tientallen[$nummer[0]];
				}
			}
		}
		elseif(strlen($num) == 3){
			if ($nummer[0] == 0){
				$temp = $nummer[1].$nummer[2];
				$return = num2string($temp, "false");
			}
			elseif ($nummer[0] == 1){
				$temp = $nummer[1].$nummer[2];
				$return = "honderd".num2string($temp, "false");
			}
			else
			{
				$temp = $nummer[1].$nummer[2];
				$return = $eenheden[$nummer[0]]."honderd".num2string($temp, "false");
			}
		}
		elseif(strlen($num) == 4){
			if ($nummer[0] == 1){
				$temp = $nummer[1].$nummer[2].$nummer[3];
				$return = "duizend".num2string($temp, "false");
			}
			else
			{
				$temp = $nummer[1].$nummer[2].$nummer[3];
				$return = $eenheden[$nummer[0]]."duizend".num2string($temp, "false");
			}
		}
		elseif(strlen($num) == 5){
			$temp1 = $nummer[0].$nummer[1];
			$temp = $nummer[2].$nummer[3].$nummer[4];
			$return =  num2string($temp1, "false")."duizend".num2string($temp, "false");
		}
		elseif(strlen($num) == 6){
			$temp1 = $nummer[0].$nummer[1].$nummer[2];
			$temp = $nummer[3].$nummer[4].$nummer[5];
			$return =  num2string($temp1, "false")."duizend".num2string($temp, "false");
		}
		elseif(strlen($num) == 7){
			$temp = $nummer[1].$nummer[2].$nummer[3].$nummer[4].$nummer[5].$nummer[6];
			$return = num2string($nummer[0], "false")."miljoen".num2string($temp, "false");
		}
		elseif(strlen($num) == 8){
			$temp1 = $nummer[0].$nummer[1];
			$temp = $nummer[2].$nummer[3].$nummer[4].$nummer[5].$nummer[6].$nummer[7];
			$return = num2string($temp1, "false")."miljoen".num2string($temp, "false");
		}
		elseif(strlen($num) == 9){
			$temp1 = $nummer[0].$nummer[1].$nummer[2];
			$temp = $nummer[3].$nummer[4].$nummer[5].$nummer[6].$nummer[7].$nummer[8];
			$return = num2string($temp1, "false")."miljoen".num2string($temp, "false");
		}
		elseif(strlen($num) == 10){
			$temp = $nummer[1].$nummer[2].$nummer[3].$nummer[4].$nummer[5].$nummer[6].$nummer[7].$nummer[8].$nummer[9];
			$return = num2string($nummer[0], "false")."miljard".num2string($temp, "false");
		}
		elseif(strlen($num) == 11){
			$temp1 = $nummer[0].$nummer[1];
			$temp = $nummer[2].$nummer[3].$nummer[4].$nummer[5].$nummer[6].$nummer[7].$nummer[8].$nummer[9].$nummer[10];
			$return = num2string($temp1, "false")."miljard".num2string($temp, "false");
		}
		elseif(strlen($num) == 12){
			$temp1 = $nummer[0].$nummer[1].$nummer[2];
			$temp = $nummer[3].$nummer[4].$nummer[5].$nummer[6].$nummer[7].$nummer[8].$nummer[9].$nummer[10].$nummer[11];
			$return = num2string($temp1, "false")."miljard".num2string($temp, "false");
		}
		else
		{
			$return = "dit nummer is te groot, het maximale nummer is: 999 999 999 999";
		}
	}
return $return;
}
?>[/code]

Reacties

0
Nog geen reacties.