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

12 اردیبهشت 1395 PHP

گاهی اوقات در پروژه ای نیاز به تبدیل عدد به حروف داریم .این یک تابع برای تبدیل عدد به حروف هست

مهمترین مزیتش هم سبک و کم حجم بودن اون هست که سرعت بالایی داره

 

function num2word($num)
{
    $num        = (string)$num;
    $one = array('','یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه');
    $ten = array('','','بیست','سی','چهل','پنجاه','شصت','هفتاد','هشتاد','نود',);
    $hundred = array('','یکصد','دویست','سیصد','چهارصد','پانصد','ششصد','هفتصد','هشتصد','نهصد',);
    $categories = array('','هزار','میلیون','میلیارد','بیلیون','بیلیارد','تریلیون','تریلیارد','کوآدریلیون',);
    $exceptions = array('ده','یازده','دوازده','سیزده','چهارده','پانزده','شانزده','هفده','هجده','نوزده',);
    $out = '';
    $j   = 0;
    $cnt = strlen($num);
    if($cnt==1)
    return $one[$num];
    for($i=--$cnt;$i>=0;$i-=3){
        $add = '';
        $i1 = $num[$i];
        $i2 = isset($num[$i-1]) ? $num[$i-1] : '';
        $i3 = isset($num[$i-2]) ? $num[$i-2] : '';
        if(!empty($i3))
        $add .= $hundred[$i3].' و ';
        if($i2>1)
        $add .= $ten[$i2].' و '.$one[$i1].' ';
        elseif($i2==1)
        $add .= $exceptions[$i1].' ';
        else
        $add .= $one[$i1].' ';
        if($add!=' ')
        $add .= $categories[$j++].' و ';
        else
        $j++;
        $out = $add.$out;
    }
    return mb_substr($out,0,-4);
}

 

💬

شاید امروز جواب خیلی از سؤال‌ها را بتوان از AI گرفت، اما تولید مطالب تخصصی، تجربه‌محور و عمیق هنوز به انگیزه نیاز دارد. این نظرات و بازخوردهای شماست که به ما نشان می‌دهد ادامه دادن این مسیر ارزشمند است.

دیدگاه شما چیست؟

نظرات (9)

eh.rasta
12 دی 1396

سلام با تشکر ولی ایراد داره 99 رو نهصد و نود ونه میگه و 9 رو نود و نه میگه

حسن زاده
30 مهر 1397

ممنون

armin
17 آذر 1397

تشکر بابت اشتراک گذاری کد
خوب کار میکنه فقط باید یک دیباگ روی اعدادی که طولشون مضرب ۳ نیست بشه.

ali
4 اسفند 1397

سلام تابعی که نوشتید ایراد داره

‌A1Gard
7 اسفند 1397

اگر ایرادی پیدا میکنین بفرمایید تا اصلاح شود

تاروت رنگی
9 اسفند 1398

سلام. تابع ارور میده لطفا بررسی کنید.

‌A1Gard
9 فروردین 1399

درست است بارها استفتاده بررسی شده

مسعود مهدیان
29 دی 1401

سلام
لطفاً کدای باگ دار نزارید

‌A1Gard
2 فروردین 1402

کد در زمان انتشار php 5.x بوده و باگی نداشته


ارسال نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

عضویت در شبکه‌های اجتماعی

جدیدترین مقالات و نکات برنامه‌نویسی را سریع تر از دیگران مطلع شوید.