|
|
|
ใครมีโค้ดแปลงตัวเลขเป็นตัวอักษรบ้างครับ คืออยากรู้แนวทางครับ ยกตัวอย่างเช่น 455 ก็แสดงเป็นตัวอักษร |
|
|
|
|
|
|
|
ตอนแรกต้องแยกค่าออกมาทีล่ะค่าโดยใช้ strlen() มาช่วย
แล้วสร้างฟังก์ชั่นอาเรย์ที่ใช้ในการเปรียบเทียบค่า เช่น
function gen_degit($def)
{
$mm = '';
$m=array(4=>"สี่",8=>"แปด",6=>"หก");
foreach ($m as $key => $value)
{
$mm .= '<option value="' . $key . '"';
if ($key == $def)
$mm .= ' selected="selected"';
$mm .= '>'.$value.'</option>';
}
return $mm;
}
แล้วก้อเช็คเงื่อนไขถ้า strlen() ที่ได้มีค่าเท่ากับค่า $key ที่กำหนดค่าใดให้ echo ค่า $value ออกมา
แล้วนำค่าที่ได้มา implode()
เราช่วยแสดงความคิดอ่ะ
ไม่แน่ใจเหมือนกานว่าจะได้รึป่าว แต่ก้อน่าจะได้น่ะ
|
|
|
|
|
Date :
10 พ.ย. 2548 11:40:26 |
By :
แอม |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
***เราบอกผิดอ่ะตรงฟังก์ชั่น strlen() ไม่ใช่เป็น substr()
|
|
|
|
|
Date :
10 พ.ย. 2548 11:48:38 |
By :
แอม |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?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);
?>
|
|
|
|
|
Date :
10 พ.ย. 2548 16:56:43 |
By :
@W_IN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดยอดเลยครับ คุณ MR.WIN
ขอให้มีความสุขมากๆ นะครับ จากใจจริง
|
|
|
|
|
Date :
2009-08-14 09:49:10 |
By :
Achita |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String st[] = {"พัน", "ร้อย", "สิบ"};
// String st2[] = {" ", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"};
// mod = num1;
// for (int i = 0; i < a.length; i++) {
// if (mod > a[i]) {
// num2 = mod / a[i];
// mod = num1 % a[i];
// st3[i] = num2;
// for (int j = 0; j < st2.length; j++) {
// if (num2 == j) {
// str = st2[j];
// System.out.print(str + st[i]);
// }
// }
// if (mod < a[2]) {
// st3[i] = mod;
// for (int j = 0; j < st2.length; j++) {
// if (mod == j) {
// str = st2[j];
// System.out.print(str + st[i] + "บาท");
// }
// }
//
// }
|
|
|
|
|
Date :
2010-10-25 20:24:28 |
By :
ป |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ mr.win สุดยอดไปเลยครับ
|
|
|
|
|
Date :
2011-02-05 17:11:54 |
By :
shinjangs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2011-04-20 09:10:33 |
By :
1234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วถ้าเราจะทำแบบกรอกตัวเลขเข้าไปแล้วให้ตัวอักษรมันออกมาอ่ะค่ะ ต้องปรับส่วนไหนเพิ่มค่ะ
|
|
|
|
|
Date :
2011-04-20 09:45:29 |
By :
Guest |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อะ!!!! คำถาม เชาว์
ถามว่า "101 บาท" อ่านว่า "หนึ่งร้อยหนึ่งบาท" หรือ "หนึ่งร้อยเอ็ดบาท"????
|
ประวัติการแก้ไข 2011-04-20 09:51:14
|
|
|
|
Date :
2011-04-20 09:50:39 |
By :
compeng |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เราเอาโค๊ดมาปรับดูแล้ว แต่ยังไม่ได้อ่ะค่ะ
Code (PHP)
function cal(){
var t1 = document.f1.t1;
var t2 = document.f1.t2;
var x = document.f1.x;
if (isNaN(t1.value*1)){
t1.value = 0;
}
if (isNaN(t2.value*1)){
t2.value = 0;
}
x.value = (parseFloat(t1.value) + parseFloat(t2.value)).toFixed(2);
}
</script>
<form name="f1">
1<input type="text" name="t1" value="0" onkeyup="cal()" /><br/>
2<input type="text" name="t2" value="0" onkeyup="cal()" /><br/>
3<input type="text" name="x" value="0" />
<?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='';
echo $x.' => '.convert($x);
?>
เราคิดว่ามันน่าจะปรับ ตัว $x แต่ยังแก้ไม่ได้
|
|
|
|
|
Date :
2011-04-20 10:16:23 |
By :
Guest |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php //number to thai function by Dr.Yes
function num2thai($thb) {
list($thb, $ths) = explode('.', $thb);
$ths = substr($ths.'00', 0, 2);
$thaiNum = array('','หนึ่ง','สอง','สาม','สี่','ห้า','หก','เจ็ด','แปด','เก้า');
$unitBaht = array('บาท','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน');
$unitSatang = array('สตางค์','สิบ');
$THB = '';
$j = 0;
for($i=strlen($thb)-1; $i>=0; $i--,$j++) {
$num = $thb[$i];
$tnum = $thaiNum[$num];
$unit = $unitBaht[$j];
switch(true) {
case $j==0 && $num==1 && strlen($thb)>1: $tnum = 'เอ็ด'; break;
case $j==1 && $num==1: $tnum = ''; break;
case $j==1 && $num==2: $tnum = 'ยี่'; break;
case $j==6 && $num==1 && strlen($thb)>7: $tnum = 'เอ็ด'; break;
case $j==7 && $num==1: $tnum = ''; break;
case $j==7 && $num==2: $tnum = 'ยี่'; break;
case $j!=0 && $j!=6 && $num==0: $unit = ''; break;
}
$S = $tnum . $unit;
$THB = $S . $THB;
}
if($ths=='00') {
$THS = 'ถ้วน';
} else {
$j=0;
$THS = '';
for($i=strlen($ths)-1; $i>=0; $i--,$j++) {
$num = $ths[$i];
$tnum = $thaiNum[$num];
$unit = $unitSatang[$j];
switch(true) {
case $j==0 && $num==1 && strlen($ths)>1: $tnum = 'เอ็ด'; break;
case $j==1 && $num==1: $tnum = ''; break;
case $j==1 && $num==2: $tnum = 'ยี่'; break;
case $j!=0 && $j!=6 && $num==0: $unit = ''; break;
}
$S = $tnum . $unit;
$THS = $S . $THS;
}
}
return $THB.$THS;
}
$thb = mt_rand()/100;//random ตัวเลข;
echo number_format($thb,2)."
";
echo num2thai($thb);
?>
|
|
|
|
|
Date :
2011-04-20 10:53:47 |
By :
compeng |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หน้าตาโปรแกรมจะเป็นยังงี้อ่ะค่ะ
คืออยากให้มันอ่านค่าเดียวกับช่องที่3 อ่ะค่ะ
|
|
|
|
|
Date :
2011-04-20 11:32:36 |
By :
Guest |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดีครับ ^_^
|
|
|
|
|
Date :
2011-04-20 15:09:18 |
By :
badkung04 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จาก No. 14
ยังทำไม่ได้เลยอ่ะค่ะ พี่ๆช่วยหน่อยค่ะ
|
|
|
|
|
Date :
2011-04-21 15:39:13 |
By :
Guest |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มีแก้ bug นิดหน่อยนะครับ ตรงบรรทัด
if($i==($strlen-1) AND $n==1){ $convert .=
'เอ็ด'; }
แก้เป็น
if($i==($strlen-1) AND $n==1 AND ($strlen > 1)){ $convert .=
'เอ็ด'; }
เพราะ ไม่งั้น 1 บาท จะได้เป็น เอ็ดบาทครับ
อ้อ แก้ั้ทั้ง 2 ที่ (ส่วนที่เป็น บาท และส่วนที่เป็นสตางค์ครับ)
|
|
|
|
|
Date :
2011-08-23 11:16:38 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้า 1.5 อ่าครับ มันเป็น หนึ่งบาทห้าสตางค์ครับ - -+
ถ้าแก้
$strlen = strlen($number[1]);
เป็น
$strlen = strlen($number[1]);
if($strlen==1){
$number[1].="0";
$strlen=2;
}
จะมีบัคป่าวครับ
|
ประวัติการแก้ไข 2012-02-15 11:57:26
|
|
|
|
Date :
2012-02-15 11:50:39 |
By :
saruman248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|