Skip to content

Instantly share code, notes, and snippets.

@sineld
Created September 26, 2017 07:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sineld/6ac8ba1302a12c46865a8a7a36c2e618 to your computer and use it in GitHub Desktop.
Save sineld/6ac8ba1302a12c46865a8a7a36c2e618 to your computer and use it in GitHub Desktop.
sayıyı yazıya çevirme
<?php
// Kaynak: http://www.jteklif.com/php-icin-sayiyi-yaziya-cevirme/
$yaziyla = sayiyiYaziyaCevir(123456.67, 2, "TL", "Kr", "#", null, null, null);
echo (sayiyiYaziyaCevir("123456.67", 2, "TL", "Kr", "#", null, null, null));
function sayiyiYaziyaCevir($sayi, $kurusbasamak, $parabirimi, $parakurus, $diyez, $bb1, $bb2, $bb3) {
// kurusbasamak virgülden sonra gösterilecek basamak sayısı
// parabirimi = TL gibi , parakurus = Kuruş gibi
// diyez başa ve sona kapatma işareti atar # gibi
$b1 = array("", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz");
$b2 = array("", "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", "seksen", "doksan");
$b3 = array("", "yüz", "bin", "milyon", "milyar", "trilyon", "katrilyon");
if ($bb1 != null) {
// farklı dil kullanımı yada farklı yazım biçimi için
$b1 = $bb1;
}
if ($bb2 != null) {
// farklı dil kullanımı
$b2 = $bb2;
}
if ($bb3 != null) {
// farklı dil kullanımı
$b3 = $bb3;
}
$say1 = "";
$say2 = ""; // say1 virgül öncesi, say2 kuruş bölümü
$sonuc = "";
$sayi = str_replace(",", ".", $sayi); //virgül noktaya çevrilir
$nokta = strpos($sayi, "."); // nokta indeksi
if ($nokta > 0) {
// nokta varsa (kuruş)
$say1 = substr($sayi, 0, $nokta); // virgül öncesi
$say2 = substr($sayi, $nokta, strlen($sayi)); // virgül sonrası, kuruş
} else {
$say1 = $sayi; // kuruş yoksa
}
$son;
$w = 1; // işlenen basamak
$sonaekle = 0; // binler on binler yüzbinler vs. için sona bin (milyon,trilyon...) eklenecek mi?
$kac = strlen($say1); // kaç rakam var?
$sonint; // işlenen basamağın rakamsal değeri
$uclubasamak = 0; // hangi basamakta (birler onlar yüzler gibi)
$artan = 0; // binler milyonlar milyarlar gibi artışları yapar
$gecici;
if ($kac > 0) {
// virgül öncesinde rakam var mı?
for ($i = 0; $i < $kac; $i++) {
$son = $say1[$kac - 1 - $i]; // son karakterden başlayarak çözümleme yapılır.
$sonint = $son; // işlenen rakam Integer.parseInt(
if ($w == 1) {
// birinci basamak bulunuyor
$sonuc = $b1[$sonint] . $sonuc;
} else if ($w == 2) {
// ikinci basamak
$sonuc = $b2[$sonint] . $sonuc;
} else if ($w == 3) {
// 3. basamak
if ($sonint == 1) {
$sonuc = $b3[1] . $sonuc;
} else if ($sonint > 1) {
$sonuc = $b1[$sonint] . $b3[1] . $sonuc;
}
$uclubasamak++;
}
if ($w > 3) {
// 3. basamaktan sonraki işlemler
if ($uclubasamak == 1) {
if ($sonint > 0) {
$sonuc = $b1[$sonint] . $b3[2 + $artan] . $sonuc;
if ($artan == 0) {
// birbin yazmasını engelle
if ($kac - 1 == $i) {
$sonuc = str_replace($b1[1] . $b3[2], $b3[2], $sonuc);
}
}
$sonaekle = 1; // sona bin eklendi
} else {
$sonaekle = 0;
}
$uclubasamak++;
} else if ($uclubasamak == 2) {
if ($sonint > 0) {
if ($sonaekle > 0) {
$sonuc = $b2[$sonint] . $sonuc;
$sonaekle++;
} else {
$sonuc = $b2[$sonint] . $b3[2 + $artan] . $sonuc;
$sonaekle++;
}
}
$uclubasamak++;
} else if ($uclubasamak == 3) {
if ($sonint > 0) {
if ($sonint == 1) {
$gecici = $b3[1];
} else {
$gecici = $b1[$sonint] . $b3[1];
}
if ($sonaekle == 0) {
$gecici = $gecici . $b3[2 + $artan];
}
$sonuc = $gecici . $sonuc;
}
$uclubasamak = 1;
$artan++;
}
}
$w++; // işlenen basamak
}
} // if(kac>0)
if ($sonuc == "") {
// virgül öncesi sayı yoksa para birimi yazma
$parabirimi = "";
}
$say2 = str_replace(".", "", $say2);
$kurus = "";
if ($say2 != "") {
// kuruş hanesi varsa
if ($kurusbasamak > 3) {
// 3 basamakla sınırlı
$kurusbasamak = 3;
}
$kacc = strlen($say2);
if ($kacc == 1) {
// 2 en az
$say2 = $say2 . "0"; // kuruşta tek basamak varsa sona sıfır ekler.
$kurusbasamak = 2;
}
if (strlen($say2) > $kurusbasamak) {
// belirlenen basamak kadar rakam yazılır
$say2 = substr($say2, 0, $kurusbasamak);
}
$kac = strlen($say2); // kaç rakam var?
$w = 1;
for ($i = 0; $i < $kac; $i++) {
// kuruş hesabı
$son = $say2[$kac - 1 - $i]; // son karakterden başlayarak çözümleme yapılır.
$sonint = $son; // işlenen rakam Integer.parseInt(
if ($w == 1) {
// birinci basamak
if ($kurusbasamak > 0) {
$kurus = $b1[$sonint] . $kurus;
}
} else if ($w == 2) {
// ikinci basamak
if ($kurusbasamak > 1) {
$kurus = $b2[$sonint] . $kurus;
}
} else if ($w == 3) {
// 3. basamak
if ($kurusbasamak > 2) {
if ($sonint == 1) {
// 'biryüz' ü engeller
$kurus = $b3[1] . $kurus;
} else if ($sonint > 1) {
$kurus = $b1[$sonint] . $b3[1] . $kurus;
}
}
}
$w++;
}
if ($kurus == "") {
// virgül öncesi sayı yoksa para birimi yazma
$parakurus = "";
} else {
$kurus = $kurus . " ";
}
$kurus = $kurus . $parakurus; // kuruş hanesine 'kuruş' kelimesi ekler
}
$sonuc = $diyez . $sonuc . " " . $parabirimi . " " . $kurus . $diyez;
return $sonuc;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment