php文字转化为阿拉伯数字

a442091317 2011-11-26 11:15:53
今天看到一道题,
用php写一个函数数将一,二,十一,十二,二十二,四十三,一百一十八,七百五十八,一千五十六,一千九百四十二这样的中文数字转换成1,2,11,12,22,43,118,758,1056,1942这样阿拉伯数字,6000以内的能转换就行了。
用什么思路去解决?
...全文
377 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 helloyou0 的回复:]
纯属个人猜测, 42, 误差2上下
[/Quote]

某日曾在百度里无意看到过老大的资料……(不知真伪)
传说老大当年学初学代码时,已经不止了……
所有相当佩服老大的那种精神。人只要肯学,真正喜欢一个行当,就一定能成为这一行的状元。
helloyou0 2011-11-30
  • 打赏
  • 举报
回复
纯属个人猜测, 42, 误差2上下



[Quote=引用 13 楼 changjay 的回复:]

引用 10 楼 natici 的回复:

引用 8 楼 baoxiaohua 的回复:
发现唠叨老大对算法比较感兴趣


发现你对唠叨老大比较感兴趣,呵呵。


我对唠叨老大也很感兴趣。尤其是年龄……
不过不管怎么样,老大都是我的偶像和榜样。
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 natici 的回复:]

引用 8 楼 baoxiaohua 的回复:
发现唠叨老大对算法比较感兴趣


发现你对唠叨老大比较感兴趣,呵呵。
[/Quote]

我对唠叨老大也很感兴趣。尤其是年龄……
不过不管怎么样,老大都是我的偶像和榜样。
码无边 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hellodifa 的回复:]

引用 7 楼 xuzuning 的回复:

最基本的PHP code
$m = array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$q = array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '兆');

$n = 258704025;
$l……
[/Quote]+1
黄袍披身 2011-11-28
  • 打赏
  • 举报
回复
看怪署黍的代码是种享受.
natici 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 baoxiaohua 的回复:]
发现唠叨老大对算法比较感兴趣
[/Quote]

发现你对唠叨老大比较感兴趣,呵呵。
夏之冰雪 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuzuning 的回复:]

最基本的PHP code
$m = array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$q = array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '兆');

$n = 258704025;
$len = strlen($n);
foreach(str……
[/Quote]
代码真清爽~
代码如诗 2011-11-27
  • 打赏
  • 举报
回复
只能转换十万以内的

<?php
function toarabia($str){
$num=0;
$bins=array("零","一","二","三","四","五","六","七","八","九",'a'=>"个",'b'=>"十",'c'=>"百",'d'=>"千",'e'=>"万");
$bits=array('a'=>1,'b'=>10,'c'=>100,'d'=>1000,'e'=>10000);
foreach($bins as $key=>$val){
if(strpos(" ".$str,$val)) $str=str_replace($val,$key,$str);
}
foreach(str_split($str,2) as $val){
$temp=str_split($val,1);
if(count($temp)==1) $temp[1]="a";
if(isset($bits[$temp[0]])){
$num=$bits[$temp[0]]+(int)$temp[1];
}else{
$num+=(int)$temp[0]*$bits[$temp[1]];
}
}
return $num;
}
echo toarabia("九万九千九十九");
//99099
?>
levmg 2011-11-27
  • 打赏
  • 举报
回复
一到十和1-10做匹配

4535 = 四 五 三 五

然后根据位数

第二位后 十

第三位后 百

第四位后 千

插入 四(千)五(百)三(十)五
baoxiaohua 2011-11-27
  • 打赏
  • 举报
回复
发现唠叨老大对算法比较感兴趣
cpuzer 2011-11-27
  • 打赏
  • 举报
回复
替换呐,怎么解决
xuzuning 2011-11-27
  • 打赏
  • 举报
回复
最基本的
$m = array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$q = array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '兆');

$n = 258704025;
$len = strlen($n);
foreach(str_split($n, 1) as $i=>$v) {
echo $m[$v] . $q[$len-$i-1];
}
echo "\n";
foreach(str_split($n, 1) as $i=>$v) {
if($v) echo $m[$v];
echo $q[$len-$i-1];
}
二亿五千八百七十〇万四千〇百二十五
二亿五千八百七十万四千百二十五

请根据需要自行调整
xiachao2008 2011-11-27
  • 打赏
  • 举报
回复
观注观注观注观注观注
happypiggy2010 2011-11-27
  • 打赏
  • 举报
回复
以前有个朋友做了一个,很好的。但是忘记留底了。
zhiwensun 2011-11-27
  • 打赏
  • 举报
回复
设置一个遍历,然后遇到相应的汉字后做一个数字的加法和乘法比如二十二,应该是2*10+2,注意,这里要根据第一个二在这个字符串周的位置来决定是否乘以10
  • 打赏
  • 举报
回复
str_replace(array('一','二'),array('1','2'),$str);
自己添全1-10吧。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧