function yaziylasayi($sayi) {
    $o = array(
        'birlik' => array('bir', 'iki', 'üç', 'dört', 'beş', 'altı', 'yedi', 'sekiz', 'dokuz'),
        'onluk' => array('on', 'yirmi', 'otuz', 'kırk', 'elli', 'altmış', 'yetmiş', 'seksen', 'doksan'),
        'basamak' => array('yüz', 'bin', 'milyon', 'milyar', 'trilyon', 'katrilyon')
    );

    // Sayıyı basamaklarına ayırıyoruz
    $basamak = array_reverse(str_split(implode('', array_reverse(str_split($sayi))), 3));

    // Basamak sayısını belirliyoruz
    $basamak_sayisi = count($basamak);

    // Her basamak için:
    for ($i=0; $i < $basamak_sayisi; ++$i)
    {
        // Sayıyı basamaklarına ayırdığımızda basamaklar tersine döndüğü için burada ufak bir işlem ile basamakları düzeltiyoruz
        $basamak[$i] = implode(array_reverse(str_split($basamak[$i])));
        
        // Eğer basamak 4, 8, 15, 16, 23, 42 gibi 1 veya 2 rakamlıysa başına 3 rakama tamamlayacak şekilde "0" ekliyoruz ki foreach döngüsünde problem olmasın
        if (strlen($basamak[$i]) == 1)
            $basamak[$i] = '00' . $basamak[$i];
        elseif (strlen($basamak[$i]) == 2)
            $basamak[$i] = '0' . $basamak[$i];
    }

    $yenisayi = array();

    // Her basamak için: ($yenisayi değişkenine)
    foreach ($basamak as $k => $b)
    {
        // basamağın ilk rakamı 0'dan büyük ise
        if ($b[0] > 0)
            // değişkene rakamın harfle yazılışı ve "yüz" ekliyoruz
            $yenisayi[] = ($b[0] > 1 ? $o['birlik'][$b[0]-1] . ' ' : '') . $o['basamak'][0];

        // basamağın 2. rakamı 0'dan büyük ise
        if ($b[1] > 0)
            // değişkene rakamın harfle yazılışını ekliyoruz
            $yenisayi[] = $o['onluk'][$b[1]-1];

        // basamağın 3. rakamı 0'dan büyük ise
        if ($b[2] > 0)
            // değişkene rakamın harfle yazılışını ekliyoruz
            $yenisayi[] = $o['birlik'][$b[2]-1];

        // değişkene basamağın ismini (bin, milyon, milyar) ekliyoruz
        if ($basamak_sayisi > 1)
            $yenisayi[] = $o['basamak'][$basamak_sayisi-1];

        // Basamak sayısını azaltıyoruz ki her basamağın sonuna ilkinde ne yazıyorsa o yazılmasın
        --$basamak_sayisi;
    }
    
    return implode(' ', $yenisayi);
}
yaziylasayi('14') şeklinde kullanılır. "on dört" çıktısını verir. $o değişkeninin basamak dizgesine diğer basamakları da ekleyerek daha büyük sayılarla çalıştırabilirsiniz. Basamak sınırı yoktur.