9 Şubat 2010 Salı

PHP sayıyı yazıya çevirme

PHP kullanmaya başladım, yazdığım ilk ciddi kod parçasını sizlerle paylaşmak istiyorum. Bu kod parçası, verilen sayıyı yazıya çeviriyor. Fatura ve makbuzların alt kısımında gördüğümüz yalnız ikiyüzaltmışüç liradır. şeklindeki ifadeleri elde etmek için kullanılabilir.

Kod:

<?
function sayi2yazi($sayi) {
$birler = array("","bir","iki","üç","dört","beş","altı","yedi","sekiz",
"dokuz");
$onlar = array("","on","yirmi","otuz","kırk","elli","altmış","yetmiş",
"seksen","doksan");
$ustler= array("","bin","milyon","milyar","trilyon");

echo $sayi . " -> ";

$kalan = strlen($sayi) % 3;
if ($kalan != 0) $sayi = str_repeat("0", 3-$kalan) . $sayi;
$parcalar = str_split($sayi, 3);
$parca_adedi = sizeof($parcalar);

$sonuc= "";
for ($i = $parca_adedi; $i > 0; $i--) {

$p_yazi = "";
$parca = $parcalar[$i-1];

for ($j = 0; $j < strlen($parca); $j++) {
$bit = $parca[$j];
if ($bit != 0) {
switch ($j) {
case 0: {
if ($bit != 1) $p_yazi .= $birler[$bit];
$p_yazi .= "yüz";
break;
}
case 1: {
$p_yazi .= $onlar[$bit];
break;
}
case 2: {
$p_yazi .= $birler[$bit];
break;
}
}
}
}

if ($p_yazi=="bir" && $ustler[$parca_adedi-$i]=="bin")
$sonuc = $ustler[$parca_adedi - $i] . $sonuc;
else
$sonuc = $p_yazi . $ustler[$parca_adedi - $i] . $sonuc;

}
return $sonuc . "\n";
}

echo sayi2yazi(1);
echo sayi2yazi(101);
echo sayi2yazi(101101);
echo sayi2yazi(1001);
echo sayi2yazi(10010);
echo sayi2yazi(120230123);
echo sayi2yazi(712328);
echo sayi2yazi(42340738);
echo sayi2yazi(10101078);
echo sayi2yazi(23474854234234);
echo sayi2yazi(2347485423423);
echo sayi2yazi(72238);
?>

Ekran çıktısı:

mdpinar@mdpinar-desktop:~/php$ php sayi2yazi.php
1 -> bir
101 -> yüzbir
101101 -> yüzbirbinyüzbir
1001 -> binbir
10010 -> onbinon
120230123 -> yüzyirmimilyonikiyüzotuzbinyüzyirmiüç
712328 -> yediyüzonikibinüçyüzyirmisekiz
42340738 -> kırkikimilyonüçyüzkırkbinyediyüzotuzsekiz
10101078 -> onmilyonyüzbirbinyetmişsekiz
23474854234200 -> yirmiüçtrilyondörtyüzyetmişdörtmilyarsekizyüzellidörtmilyonikiyüzotuzdörtbinikiyüz
2347485423420 -> ikitrilyonüçyüzkırkyedimilyardörtyüzseksenbeşmilyondörtyüzyirmiüçbindörtyüzyirmi
72238 -> yetmişikibinikiyüzotuzsekiz

2 yorum:

  1. Sayın blog yöneticisi bloğunuzda paylaştığınız makaleler çok dikkatimizi çekti. İç açıcı bilgiler vermişsiniz. Notebook özel servisi olarak başarılarınızın devamını dileriz.

    YanıtlaSil
  2. Burada bir örnek daha var, biraz uzun yoldan gidilmiş galiba : http://www.jteklif.com/php-icin-sayiyi-yaziya-cevirme/

    YanıtlaSil