php 汉字怎么转阿拉伯数
时间:2022-02-11 13:51
php汉字转阿拉伯数的方法:1、创建一个PHP示例文件;2、初始化一个数组;3、将字符串按单位切分;4、将分组后的字符串转化成数字并乘以单位即可。 本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑 php 汉字怎么转阿拉伯数? php中文转阿拉伯数字 面试题,当时写了一个漏洞百出,被人鄙视了,所以回来用一上午写了一个,自己测试了一下,好像还可以。 思路 如中文数字 七百七十八万亿四千七百二十亿七千五百七十万四千四百八十六 如果把红色文字看做单位,那么用这些单位分割后,其他部分都是个十百千的数字。把这些数字乘以其单位求和,就是结果了。 代码 推荐学习:《PHP视频教程》 以上就是php 汉字怎么转阿拉伯数的详细内容,更多请关注gxlsystem其它相关文章!function ch2num($str){
//单位数组用于循环遍历,单位顺序从大到小
$c = [
'万亿'=>1000000000000,
'亿' => 100000000,
'万' => 10000,
];
//中文替换数字规则,零没什么卵用;所以去掉
$b = [
'一' =>1,
'二' =>2,
'三' =>3,
'四' =>4,
'五' =>5,
'六' =>6,
'七' =>7,
'八' =>8,
'九' =>9,
'零' =>'',
];
//替换数字
$str = str_replace(array_keys($b), array_values($b), $str);
//结果 7百7十8万亿4千7百2十亿7千5百7十万4千4百8十
//如果字符串以十开头,前边加1
if(mb_strpos($str, '十' ,0 ,'utf-8') === 0)
$str = '1'.$str;
//初始化一个数组
$arr[] = array(
'str' => $str, //字符串
'unit' => 1, //单位
);
//将字符串按单位切分
foreach ($c as $key => $value) {
$brr = [];
foreach ($arr as $item) {
if(strpos($item['str'], $key)){
$sun = explode($key, $item['str'],2);
$brr[] = [
'str' => $sun[0],
'unit' => $value,
];
$brr[] = [
'str' => $sun[1],
'unit' => $item['unit'],
];
}else{
$brr[] = $item;
}
}
$arr = $brr;
}
/* 结果
(
[0] => Array
(
[str] => 7百7十8
[unit] => 1000000000000
)
[1] => Array
(
[str] => 4千7百2十
[unit] => 100000000
)
[2] => Array
(
[str] => 7千5百7十
[unit] => 10000
)
[3] => Array
(
[str] => 4千4百8十6
[unit] => 1
)
)*/
//遍历求和
$sum = 0;
foreach ($arr as $item) {
$sum += getNum($item['str'],$item['unit']);
}
return $sum;
}
//将分组后的字符串转化成数字,并乘以单位
function getNum($str,$st){
//倍数
$a = [
'千'=>1000,
'百'=>100,
'十'=>10
];
//开始值
$num = 0;
//当前值所在位数
$step = 1;
//单位
$un = 1;
$arr = preg_split('/(?<!^)(?!$)/u', $str);
while (count($arr)) {
$m = array_pop($arr);
//如果是位数;更新倍数
if(!empty($a[$m])){
$step = $a[$m];
}
if(is_numeric($m)){
$num += $m * $step;
}
}
return $num * $st;
}