تبدیل عدد به حروف

amirepsilon

Active Member
سلام
دوستان چطور میشه عدد رو به حرف تبدیل کرد ؟
مثلا : 123 =>> صد و بیست و سه
ممنون
 

iman_ebru

Active Member
توی PHPClasses یه بار یه همچین چیزی دیدم که ترکی بود و بخاطر تفاوت ساختار زبان فارسی و ترکی قابل استفاده نبود.

یعنی ترکی راحت 11 تا 19 رو تلفظ میکنن.

11 <-> On Bir

12 <-> On Iki

13 <-> On Uc​

"on" یعنی "ده" و پسوند ها هر کدوم تلفظ یکان یک عدد هست....

-- -- -- -- -- -- -- -- -- -- -- --

اما خودم برای نمایش مشخصات ( ماه تولد ) کاربر که تو بانک اطلاعاتی بصورت عددی ذخیره شده اینو نوشتم:

PHP:
function get_month($month_number)
{

	$monthArray = array(
'1' => array('Farvardin', 'فروردین'),
'2' => array('Ordibehesht', 'اردیبهشت'),
'3' => array('Khordad', 'خرداد'),
'4' => array('Tir', 'تیر'),
'5' => array('Mordad', 'مرداد'),
'6' => array('Shahrivar', 'شهریور'),
7' => array('Mehr', 'مهر'),
8' => array('Aban', 'آبان'),
'9' => array('Azar', 'آذر'),
'10' => array('Dey', 'دی'),
'11' => array('Bahman', 'بهمن'),
'12' => array('Esfand', 'اسفند'),																						
	);
	return $monthArray[$month_number][1];
}

وقتی مثلا get_month('5') رو میخوای "مرداد" رو چاپ میکنه... میتونی همین کد رو توسعه بدی!!! از 0 تا 9 که مشکلی نداری! برای دو رقمی ها و سه رقمی ها از 10 تا 99 و 100 تا 999 و بقیه هم میتونی قبل از دریافت متغیر تعدادش رو بشمری و پیشوند و پسوند بزاری.

منظورم اینه مثلا برای 123 که تعداد 3 رقمی هست اول مقدار کاراکتر اول رو بررسی کنه اگه 1 بود پیشوند یکصد اگه 2 بود پیشوند دویست و ... بعد که صدگان مشخص شد دهگان یا کاراکتر دوم اگه 2 بود پیشوند بیست، 3 بود پیشوند سی و ... و آخر رقم یکان که از 1 تا 9 اگه 1 بود پیشوند یک، اگه 2 بود پیشوند دو و ...

برای محدودیتها و استثنائات هم مثل 11-12-13 و ... که نیاز به "یاز، دواز، سیز، ... " داری باید دونه دونه که زیاد نیستند رو تعیین می کنی..

اما اول بگرد شاید قبلا باشه!!

ایمان
 

mohan21

Member
سلام

من خیلی وقت می خواستم اینکار رو انجام بدم ...

اما وقت نکردم (تنبلی کردم) و انجام ندادم ...

با دیدن این پست تصمیم گرفتم بنویسم تا هم خودم استفاده کنم و هم شما دوستان ...

نیاز به توضیح نیست ...
ساده هست ...
متوجه میشید ...

PHP:
<?php

  $number = "5213014316" ;
 /******************************************************************************************/
 /******************************************************************************************/
 /******************************************************************************************/
  function change_to_alphabet ( $new_number )
  {
   $arr_alphabet = array ( 'صفر' , 'یک' , 'دو' , 'سه' , 'چهار' , 'پنج' , 'شش' , 'هفت' , 'هشت' , 'نه' , 'ده' , 'یازده' , 'دوازده' , 'سیزده' , 'چهارده' , 'پانزده' , 'شانزده' , 'هفده' , 'هجده' , 'نوزده' , 'بیست' , 'سی' , 'چهل' , 'پنجاه' , 'شصت' , 'هفتاد' , 'هشتاد' , 'نود' , 'یکصد' , 'دویست' , 'سیصد' , 'چهارصد' , 'پانصد' , 'ششصد' , 'هفتصد' , 'هشتصد' , 'نهصد' ) ;
   $arr_number = str_split ( $new_number , 1 ) ;
   //===========================================================================
    if ( $arr_number ['0'] != 0 )
    {
     $arr_location_0    = 28 ;
     $number_location_0   = $arr_location_0 + $arr_number ['0'] - 1 ;
     $number_to_alphabet_0 = $arr_alphabet [$number_location_0] ;
     $number_to_alphabet_0 = "$number_to_alphabet_0" ;
    }
    else
     $number_to_alphabet_0 = "" ;
    if ( $arr_number ['1'] == 1 )
    {
     $number_location_1    = $arr_number ['1'].$arr_number ['2'] ;
     $number_to_alphabet_1 = $arr_alphabet [$number_location_1] ;
     $number_to_alphabet_1 = "$number_to_alphabet_1" ;
     $number_to_alphabet_2 = "" ;     
    }
    else
    {
     if ( $arr_number ['1'] != 0 )
     {
      $arr_location_1    = 20 ;
      $number_location_1   = $arr_location_1 + $arr_number ['1'] - 2 ;
      $number_to_alphabet_1 = $arr_alphabet [$number_location_1] ;
      $number_to_alphabet_1 = "$number_to_alphabet_1" ;
     }
     else
      $number_to_alphabet_1 = "" ;
     if ( $arr_number ['2'] != 0 )
     {
      $number_location_2   = $arr_number ['2'] ;
      $number_to_alphabet_2 = $arr_alphabet [$number_location_2] ;
      $number_to_alphabet_2 = "$number_to_alphabet_2" ;
     }
     else
      $number_to_alphabet_2 = "" ;
    }
    $number_to_alphabet = "" ;
    
    if ( strlen ($number_to_alphabet_2) > 1 )
     $number_to_alphabet = "$number_to_alphabet_2" ;
     
    if ( (strlen ($number_to_alphabet_1) > 1) and (strlen ($number_to_alphabet) > 1) )
     $number_to_alphabet = "$number_to_alphabet_1"." و $number_to_alphabet" ;
    else if ( strlen ($number_to_alphabet_1) > 1 )
     $number_to_alphabet = "$number_to_alphabet_1" ;
     
    if ( (strlen ($number_to_alphabet_0) > 1) and (strlen ($number_to_alphabet) > 1) )
     $number_to_alphabet = "$number_to_alphabet_0"." و $number_to_alphabet" ;
    else if ( strlen ($number_to_alphabet_0) > 1 )
     $number_to_alphabet = "$number_to_alphabet_0" ;
    
   //===========================================================================
   
   return $number_to_alphabet ;
  } 
 
 /******************************************************************************************/
 /******************************************************************************************/
 /******************************************************************************************/
 //==================== Taqsim Kardane A`dad Be DasteHaye 3 Taee ...........  
  $division = strlen ( $number ) % 3 ;
 
  if ( $division > 0 )
   if ( $division == 1 )
    $number = "00$number" ;
   else if ( $division == 2 )
    $number = "0$number" ; 
 
  $split_number  = str_split ( $number , 3 ) ;
  
  $count = count ( $split_number ) ;
 //==================== Taqsim Kardane A`dad Be DasteHaye 3 Taee ...........
  $result_change_2 = "" ;
  
  for ( $i = $count - 1 , $m = 1 ; $i >= 0 ; $i -- , $m ++ )
  {   
   $result_change = change_to_alphabet ( $split_number [$i] ) ;
   
   if ( strlen ( $result_change ) > 3 )
    switch ( $m )
    {
     case 2 :
      $add_to_result_change = "هزار" ;
      break ;
    
     case 3 :
      $add_to_result_change = "میلیون" ;
      break ;
    
     case 4 :
      $add_to_result_change = "میلیارد" ;
      break ;
     
     default :
      $add_to_result_change = "" ;
    }
   else
    $add_to_result_change = "" ;
   
   $result_change = "$result_change $add_to_result_change" ;
   
   if ( ($count > 1) and ($i != 0) and (strlen($result_change) > 3) )
    $result_change_2 = " و $result_change"."$result_change_2" ;
   else   
    $result_change_2 = "$result_change"."$result_change_2" ;
  }
  
  echo "
  <div style=\"font-family: tahoma ; font-size: 10pt ; direction: rtl\">" ;
  
  echo $result_change_2 ;
  
  echo "
  </div>" ;
?>

این هم خروجی عدد درج شده در برنامه :

پنج میلیارد و دویست و سیزده میلیون و چهارده هزار و سیصد و شانزده
 

جدیدترین ارسال ها

بالا