So konvertieren Sie chinesische Zeichen in arabische Zahlen: 1. Erstellen Sie eine PHP-Beispieldatei. 3. Teilen Sie die Zeichenfolge in Einheiten auf. 4. Konvertieren Sie die gruppierten Zeichenfolgen in Zahlen und multiplizieren Sie sie mit den Einheiten. Dürfen.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
php Wie konvertiere ich chinesische Schriftzeichen in arabische Ziffern?
php Chinesisch-Arabische Ziffern
Interview-Frage: Ich habe damals eine geschrieben, die voller Lücken war und von anderen verachtet wurde, also kam ich zurück und verbrachte den Morgen damit, eine zu schreiben, testete sie selbst und es schien so sei in Ordnung.
Denken
So wie chinesische Zahlen
Siebenhundertachtundsiebzig Billionen, viertausendzweiundsiebzig Milliarden, fünfundsiebzig Millionen siebenhundertvierundvierzigtausendsechsundachtzig
Wenn der rote Text ist als Einheit betrachtet. Nach der Division durch diese Einheiten sind die anderen Teile Zehner-, Hunderter- und Tausenderzahlen. Multiplizieren Sie diese Zahlen mit ihren Einheiten und summieren Sie sie, um das Ergebnis zu erhalten.
Code
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; }
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie chinesische Schriftzeichen in PHP in arabische Ziffern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!