php 漢字をアラビア数字に変換する方法: 1. PHP サンプル ファイルを作成する; 2. 配列を初期化する; 3. 文字列をユニットに分割する; 4. グループ化された文字列を数値に変換し、単純に乗算するユニット。
この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター
php 中国語の変換方法文字をアラビア数字に?
php 中国語からアラビア数字へ
面接の質問、抜け穴だらけの質問を書いてしまい、他の人から軽蔑されたので、戻ってきて時間を費やしました午前中ずっとこれを書いていて、自分でテストしてみたところ、問題ないようです。
感想
漢数字など
七百七十八兆、四十七兆、七千五百万、七百、 four One Thousand Four Hundred and Eighty-Six
赤字の部分を単位とすると、その単位で割ると残りの部分は100万の数字になります。これらの数値に単位を掛けて合計すると、結果が得られます。
コード
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 中国語 Web サイトの他の関連記事を参照してください。