close
تبلیغات در اینترنت
سورس الگوریتم تبدیل عدد به حروف فارسی در php
loading...

آموزش برنامه نویسی

<?php header ( 'Content-Type: text/html; charset=utf-8' ); function number2letters($strnum) {          $size_e = strlen ( $strnum );          for($i = 0; $i < $size_e; $i ++) {         if (! ($strnum [$i] >= "0" && $strnum [$i] <= "9")) {             die ( "content of string must be number. " . 'فقط عدد…

aalma بازدید : 792 جمعه 03 آبان 1392 نظرات ()

php

<?php

header ( 'Content-Type: text/html; charset=utf-8' );

function number2letters($strnum) {
    
    $size_e = strlen ( $strnum );
    
    for($i = 0; $i < $size_e; $i ++) {
        if (! ($strnum [$i] >= "0" && $strnum [$i] <= "9")) {
            die ( "content of string must be number. " . 'فقط عدد وارد کنید' );
        
        }
    }
    
    for($i = 0; $i < $size_e && $strnum [$i] == "0"; $i ++)
        ;
    
    $str = substr ( $strnum, $i );
    $size = strlen ( $str );
    
    $arr = array ();
    $res = "";
    $mod = $size % 3;
    if ($mod) {
        $arr [] = substr ( $str, 0, $mod );
    }
    
    for($j = $mod; $j < $size; $j += 3) {
        $arr [] = substr ( $str, $j, 3 );
    }
    
    $arr1 = array ("", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" );
    $arr2 = array (1 => "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" );
    $arr3 = array (1 => "ده", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" );
    $arr4 = array (1 => "صد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" );
    $arr5 = array (1 => "هزار", "میلیون", "میلیارد", "تیلیارد" );
    $explode = 'و';
    $size_arr = count ( $arr );
    
    if ($size_arr > count ( $arr5 ) + 1) {
        die ( "عدد بسیار بزرگ است . " . 'this number is greate' );
    
    }
    
    for($i = 0; $i < $size_arr; $i ++) {
        
        $flag_2 = 0;
        $flag_1 = 0;
        
        if ($i) {
            $res .= ' ' . $explode . ' ';
        }
        
        $p = $arr [$i];
        $ss = strlen ( $p );
        
        for($k = 0; $k < $ss; $k ++) {
            if ($p [$k] != "0") {
                break;
            }
        }
        
        $p = substr ( $p, $k );
        $size_p = strlen ( $p );
        
        if ($size_p == 3) {
            $res .= $arr4 [( int ) $p [0]];
            $p = substr ( $p, 1 );
            $size_p = strlen ( $p );
            
            if ($p [0] == "0") {
                $p = substr ( $p, 1 );
                $size_p = strlen ( $p );
                if ($p [0] == "0") {
                    continue;
                } else {
                    $flag_1 = 1;
                }
            
            } else {
                $flag_2 = 1;
            }
        
        }
        
        if ($size_p == 2) {
            
            if ($flag_2) {
                $res .= ' ' . $explode . ' ';
            }
            
            if ($p >= "0" && $p <= "9") {
                $res .= $arr1 [( int ) $p];
            } elseif ($p >= "11" && $p <= "19") {
                $res .= $arr2 [( int ) $p [1]];
            } elseif ($p [0] >= "1" && $p [0] <= "9" && $p [1] == "0") {
                $res .= $arr3 [( int ) $p [0]];
            } else {
                $res .= $arr3 [( int ) $p [0]];
                $res .= ' ' . $explode . ' ';
                $res .= $arr1 [( int ) $p [1]];
            }
        
        }
        
        if ($size_p == 1) {
            
            if ($flag_1) {
                $res .= ' ' . $explode . ' ';
            }
            
            $res .= $arr1 [( int ) $p];
        
        }
        
        if ($i + 1 < $size_arr) {
            $res .= ' ' . $arr5 [$size_arr - $i - 1];
        }
    
    }
    
    return ($res);
}

echo number2letters ( "112222123456789" );

?>
مطالب مرتبط
ارسال نظر برای این مطلب
این نظر توسط آرمان در تاریخ 1395/8/23 و 19:05 دقیقه ارسال شده است

ممنون از شما

این نظر توسط آرش در تاریخ 1393/1/26 و 8:57 دقیقه ارسال شده است

اگر عدد خیلی بزرگ باشه باید در اون جدول از مبنا های بزرگتری استفاده بشه مثل 'میلیارد'
پاسخ : بله این سورس فقط جهت اموزش گذاشته شده.

این نظر توسط tonekasoft در تاریخ 1392/11/20 و 12:24 دقیقه ارسال شده است

عدد 100100100100 رو امتحان کن


نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی
تبلیغات
Rozblog.com رز بلاگ - متفاوت ترين سرويس سایت ساز
اطلاعات کاربری
نام کاربری :
رمز عبور :
  • فراموشی رمز عبور؟
  • نویسندگان
    نظرسنجی
    قالب سایت؟




    بیشتر چه نوع مطالبی رو میپسندید؟





    آمار سایت
  • کل مطالب : 588
  • کل نظرات : 391
  • افراد آنلاین : 2
  • تعداد اعضا : 3329
  • آی پی امروز : 53
  • آی پی دیروز : 65
  • بازدید امروز : 124
  • باردید دیروز : 217
  • گوگل امروز : 6
  • گوگل دیروز : 15
  • بازدید هفته : 341
  • بازدید ماه : 3,616
  • بازدید سال : 58,446
  • بازدید کلی : 2,058,692