php漢字轉阿拉伯數的方法:1、建立一個PHP範例檔案;2、初始化一個陣列;3、將字串依單位切分;4、將分組後的字串轉換成數字並乘以單位即可。
本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦
php 漢字怎麼轉阿拉伯數?
php中文轉阿拉伯數字
面試題,當時寫了一個漏洞百出,被人鄙視了,所以回來用一整個早上寫了一個,自己測試了一下,好像還可以。
想法
如中文數字
七百七十八萬億四千七百二十億七千五百七十萬四千四百八十六
如果把紅色文字看做單位,那麼用這些單位分割後,其他部分都是個十百千的數字。把這些數字乘以其單位求和,就是結果了。
代碼
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; }
#推薦學習:《PHP影片教學》
#
以上是php 漢字怎麼轉阿拉伯數的詳細內容。更多資訊請關注PHP中文網其他相關文章!