PDA

View Full Version : تبدیل عدد به حروق تبدیل 110 به صدو ده



olampiad
چهارشنبه 15 شهریور 1396, 12:00 عصر
سلام و عرض ادب و احترام
خوب هستین
آیا تو php کلاس آماده ای وجود داره که اعداد رو به حروف تبدیل کنه .
مثلا 155 رو به صدو و پنجاه و پنج تبدیل کنه
خیلی ممنون

aalmair
چهارشنبه 15 شهریور 1396, 14:03 عصر
<?php
function num2strnumfarsi($number=0){

$arr_number_three_piece=array();

$arr1=array(""," یک "," دو "," سه "," چهار "," پنج "," شش "," هفت "," هشت "," نه ");
$arr2=array(1=>" یازده "," دوازده "," سیزده "," چهارده "," پانزده "," شانزده "," هفده "," هجده "," نوزده ");
$arr3=array(1=>" ده "," بیست "," سی "," چهل "," پنجاه "," شصت "," هفتاد "," هشتاد "," نود " );
$arr4=array(1=>" صد "," دویست "," سیصد "," چهارصد "," پانصد "," ششصد "," هفتصد "," هشتصد "," نهصد ") ;
$arr5=array(1=>" هزار "," میلیون ", " میلیارد "," تیلیارد ","","","","","","","","");


while($number>0){



$piece=(int)($number%1000);
$number=(int)($number/1000);


$arr_number_three_piece[]=$piece;



}


$arr_number_three_piece= array_reverse($arr_number_three_piece) ;
$size_arr=count($arr_number_three_piece);



if($size_arr>5){
die("عدد بسیار بزرگ است");

}
$str='';

for($i=0;$i<$size_arr;$i++)
{
$current_piece_word=array();
$current_piece=$arr_number_three_piece[$i];






if($current_piece >= 1 && $current_piece <= 9)
{
$current_piece_word[]=$arr1[$current_piece] ;

}elseif($current_piece >= 11 && $current_piece <= 19)
{
$current_piece_word[]=$arr2[(int)($current_piece%10)] ;

}elseif($current_piece >= 10 && $current_piece <= 90)
{
$current_piece_word[]=$arr3[(int)($current_piece/10)] ;
$temp_num=(int)($current_piece%10) ;

if($temp_num >= 1 && $temp_num <= 9)
{
$current_piece_word[]=$arr1[$temp_num] ;
}

}elseif($current_piece >= 100 && $current_piece <= 999)
{
$current_piece_word[]=$arr4[(int)($current_piece/100)] ;
$temp_num=(int)($current_piece%100) ;

if($temp_num >= 1 && $temp_num <= 9)
{
$current_piece_word[]=$arr1[$temp_num] ;

}elseif($temp_num >= 11 && $temp_num <= 19)
{
$current_piece_word[]=$arr2[(int)($temp_num%10)] ;

}elseif($temp_num >= 10 && $temp_num <= 90)
{
$current_piece_word[]=$arr3[(int)($temp_num/10)] ;
$temp_num2=(int)($temp_num%10) ;

if($temp_num2 >= 1 && $temp_num2 <= 9)
{
$current_piece_word[]=$arr1[$temp_num2] ;
}
}





}

if(!empty($current_piece_word))
{
if($i)
{
$str.=' , ' ;

}


for($j=0;$j<count($current_piece_word);$j++)
{

if($j==1 || $j==2)
{
$str.=' , ' ;
}

$str.=$current_piece_word[$j];

if(!isset($current_piece_word[$j+1])&& isset($arr5[$size_arr-$i-1]))
{
$str.=$arr5[$size_arr-$i-1] ;
}


}

}


}







return $str;
}


echo num2strnumfarsi(110);





146264