Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie chinesische Schriftzeichen in PHP in arabische Ziffern

So konvertieren Sie chinesische Schriftzeichen in PHP in arabische Ziffern

藏色散人
藏色散人Original
2021-11-01 11:07:221426Durchsuche

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.

So konvertieren Sie chinesische Schriftzeichen in PHP in arabische Ziffern

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(&#39;/(?<!^)(?!$)/u&#39;, $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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn