PDA

View Full Version : سوال: چاپ مبلغ فاکتور به صورت حروف



rash44
جمعه 18 اردیبهشت 1388, 20:35 عصر
سلام
با کد فوق مبلغ 1 فاکتور رو بصروت حروف چاپ می کنم
مثلا بجای سیصد چاپ میکنه سه صد یا دویست دو صد

لطفا کد رو اصلاح کنید
ممنون


<?php

$nwords = array( "صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت",
"هشت", "نه", "ده", "یازده", "دوازده", "سیزده",
"چهارده", "پانزده", "شانزده", "هفده", "هجده",
"نوزده", "بیست", 30 => "سی", 40 => "چهل",
50 => "پنجاه", 60 => "شصت", 70 => "هفتاد", 80 => "هشتاد",
90 => "نود" );

function int_to_words($x)
{
global $nwords;
if(!is_numeric($x))
{
$w = '#';
}else if(fmod($x, 1) != 0)
{
$w = '#';
}else{
if($x < 0)
{
$w = 'minus ';
$x = -$x;
}else{
$w = '';
}
if($x < 21)
{
$w .= $nwords[$x];
}else if($x < 100)
{
$w .= $nwords[10 * floor($x/10)];
$r = fmod($x, 10);
if($r > 0)
{
$w .= ' و '. $nwords[$r];
}
} else if($x < 1000)
{
$w .= $nwords[floor($x/100)] .' صد';
$r = fmod($x, 100);
if($r > 0)
{
$w .= ' و '. int_to_words($r);
}
} else if($x < 1000000)
{
$w .= int_to_words(floor($x/1000)) .' هزار';
$r = fmod($x, 1000);
if($r > 0)
{
$w .= ' و ';
if($r < 100)
{
$w .= ' ';
}
$w .= int_to_words($r);
}
} else {
$w .= int_to_words(floor($x/1000000)) .' میلیون';
$r = fmod($x, 1000000);
if($r > 0)
{
$w .= ' ';
if($r < 100)
{
$word .= ' ';
}
$w .= int_to_words($r);
}
}
}
return $w;
}
echo '
'.int_to_words(($price+3000)).' ریال تمام ';
?>

I,Nobody
شنبه 19 اردیبهشت 1388, 00:13 صبح
اينو تست كنيد.
من تا 12 رقم تست كردم و جواب گرفتم.

<?php

$singles = array("", " یک", " دو", " سه", " چهار", " پنج", " شش", " هفت", " هشت", " نه", " ده", " یازده", " دوازده", " سیزده", " چهارده", " پانزده", " شانزده", " هفده", " هجده", " نوزده");
$tens = array("", "", " بیست", " سی", " چهل", " پنجاه", " شصت", " هفتاد", " هشتاد", " نود");
$thousands = array("", " هزار"," میلیون"," میلیارد"," تریلیون");

$hundred_pat= array("یک صد", "دو صد", "سه صد", "چهار صد", "پنج صد", "شش صد", "هفت صد", "هشت صد", "نه صد");
$hundred_rep= array("یکصد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد");

$more_pat=array(" و هزار", " و میلیون", " و میلیارد", " و تریلیون");
$more_rep=array(" هزار", " میلیون", " میلیارد", " تریلیون");

function ThouConvert($num, $tri) {

global $singles, $tens, $thousands;
$ss = (int) ($num / 1000);
$tt = ($num / 100) % 10;
$thth = $num % 100;


$tempstr = "";


if ($tt > 0)
$tempstr = $singles[$tt] . " صد";

if ($thth < 20)
$tempstr .= $singles[$thth];
else
$tempstr .= $tens[(int) ($thth / 10)] . $singles[$thth % 10];

if ($tempstr != "")
$tempstr .= $thousands[$tri];

if ($ss > 0)
return ThouConvert($ss, $tri+1).$tempstr;
else
return $tempstr;
}

function Num2Word($num) {
global $hundred_pat,$hundred_rep,$more_pat,$more_rep;
$str="$num";
if(strlen($str)>12)
return false;

if ($num < 0)
return "منفی".ThouConvert(-$num, 0);

if ($num == 0)
return "صفر";

$result= trim(ThouConvert($num, 0));
$result=str_replace($hundred_pat,$hundred_rep,$res ult);
$result=str_replace(" "," و ",$result);
$result=str_replace($more_pat,$more_rep,$result);
return $result;
}

$num = 63487621;
echo Num2Word($num);
?>