ฟังก์ชันแปลงตัวเลขเป็นตัวอักษรของ PHP


หน้าแรก PHP MySQL เกร็ดความรู้ ฟังก์ชันแปลงตัวเลขเป็นตัวอักษรของ PHP
แบบที่ 1
<?PHP
function convert($number){
$txtnum1 = 
array('ศูนย์','หนึ่ง','สอง','สาม','สี่','ห้า','หก','เจ็ด','แปด','เก้า','สิบ');
$txtnum2 = 
array('','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน');
$number = str_replace(",","",$number);
$number = str_replace(" ","",$number);
$number = str_replace("บาท","",$number);
$number = explode(".",$number);
if(sizeof($number)>2){
return 'ทศนิยมหลายตัวนะจ๊ะ';
exit;
}
$strlen = strlen($number[0]);
$convert = '';
for($i=0;$i<$strlen;$i++){
$n = substr($number[0], $i,1);
if($n!=0){
if($i==($strlen-1) AND $n==1){ $convert .= 
'เอ็ด'; }
elseif($i==($strlen-2) AND $n==2){ 
$convert .= 'ยี่'; }
elseif($i==($strlen-2) AND $n==1){ 
$convert .= ''; }
else{ $convert .= $txtnum1[$n]; }
$convert .= $txtnum2[$strlen-$i-1];
}
}
$convert .= 'บาท';
if($number[1]=='0' OR $number[1]=='00' OR 
$number[1]==''){
$convert .= 'ถ้วน';
}else{
$strlen = strlen($number[1]);
for($i=0;$i<$strlen;$i++){
$n = substr($number[1], $i,1);
if($n!=0){
if($i==($strlen-1) AND $n==1){$convert 
.= 'เอ็ด';}
elseif($i==($strlen-2) AND 
$n==2){$convert .= 'ยี่';}
elseif($i==($strlen-2) AND 
$n==1){$convert .= '';}
else{ $convert .= $txtnum1[$n];}
$convert .= $txtnum2[$strlen-$i-1];
}
}
$convert .= 'สตางค์';
}
return $convert;
}

$x = '543219';
echo $x.' => '.convert($x);
?> 

#################################################################################
แบบที่ 2

<?function num2thai($number){$t1 = array("ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า");$t2 = array("เอ็ด", "ยี่", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน");$zerobahtshow = 0; // ในกรณีที่มีแต่จำนวนสตางค์ เช่น 0.25 หรือ .75 จะให้แสดงคำว่า ศูนย์บาท หรือไม่ 0 = ไม่แสดง, 1 = แสดง(string) $number;$number = explode(".", $number);if(!empty($number[1])){if(strlen($number[1]) == 1){$number[1] .= "0";}elseif(strlen($number[1]) > 2){if($number[1]{2} < 5){$number[1] = substr($number[1], 0, 2);}else{$number[1] = $number[1]{0}.($number[1]{1}+1);}}}for($i=0; $i<count($number); $i++){$countnum[$i] = strlen($number[$i]);if($countnum[$i] <= 7){$var[$i][] = $number[$i];}else{$loopround = ceil($countnum[$i]/6);for($j=1; $j<=$loopround; $j++){if($j == 1){$slen = 0;$elen = $countnum[$i]-(($loopround-1)*6);}else{$slen = $countnum[$i]-((($loopround+1)-$j)*6);$elen = 6;}$var[$i][] = substr($number[$i], $slen, $elen);}}$nstring[$i] = "";for($k=0; $k<count($var[$i]); $k++){if($k > 0) $nstring[$i] .= $t2[7];$val = $var[$i][$k];$tnstring = "";$countval = strlen($val);for($l=7; $l>=2; $l--){if($countval >= $l){$v = substr($val, -$l, 1);if($v > 0){if($l == 2 && $v == 1){$tnstring .= $t2[($l)];}elseif($l == 2 && $v == 2){$tnstring .= $t2[1].$t2[($l)];}else{$tnstring .= $t1[$v].$t2[($l)];}}}}if($countval >= 1){$v = substr($val, -1, 1);if($v > 0){if($v == 1 && $countval > 1 && substr($val, -2, 1) > 0){$tnstring .= $t2[0];}else{$tnstring .= $t1[$v];}}}$nstring[$i] .= $tnstring;}}$rstring = "";if(!empty($nstring[0]) || $zerobahtshow == 1 || empty($nstring[1])){if($nstring[0] == "") $nstring[0] = $t1[0];$rstring .= $nstring[0]."บาท";}if(count($number) == 1 || empty($nstring[1])){$rstring .= "ถ้วน";}else{$rstring .= $nstring[1]."สตางค์";}return $rstring;}?>

#################################################################################

แบบที่ 3

<?
 echo num2string("12345234567345678.123456");

 function num2string($num)
 {
  $digit=Array("หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า");
  $unit=Array("สิบ","ร้อย","พัน","หมื่น","แสน");

  if($num==0)
   return "ศูนย์บาทถ้วน";

  if(strpos($num,".")==0)
   $num.=".00";

  $tmp=substr($num,0,strpos($num,"."));
  while(strlen($tmp)>6)
  {
   $cut=strlen($tmp)%6;
   if($cut==0)$cut=6;
   $data=substr($tmp,0,$cut);
   for($i=0;$i<strlen($data)-2;$i++)
   {
    if($data[$i]==0)
     continue;

    $ans.=$digit[$data[$i]-1].$unit[strlen($data)-$i-2];
   }
   $ans.=num2string_2digit(substr($data,strlen($data)-2))."ล้าน";
   $tmp=substr($tmp,$cut);
  }

  for($i=0;$i<strlen($tmp)-2;$i++)
  {
   if($tmp[$i]==0)
    continue;

   $ans.=$digit[$tmp[$i]-1].$unit[strlen($tmp)-$i-2];
  }

  $ans.=num2string_2digit(substr($tmp,strlen($tmp)-2))."บาท";

  $tmp=substr($num,strpos($num,".")+1);
  if(substr($tmp,0,2)=="00")
   return $ans."ถ้วน";

  return $ans.num2string_2digit($tmp)."สตางค์";
 }
 function num2string_2digit($num)
 {
  $digit=Array("ศูนย์","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า");

  $ans="";
  $num=sprintf("%d",$num);

  if(strlen($num)==1)
   return $digit[$num];

  if($num[0]==2)
   $ans.="ยี่";
  else if($num[0]>2)
   $ans.=$digit[$num[0]];

  if($num[0]>0)
   $ans.="สิบ";

  if($num[1]>1)
   $ans.=$digit[$num[1]];
  else if($num[1]==1)
   $ans.="เอ็ด";

  return $ans;
 }
?>



ขึ้นไปด้านบน