Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar aksara Cina kepada angka Arab dalam php

Bagaimana untuk menukar aksara Cina kepada angka Arab dalam php

藏色散人
藏色散人asal
2021-11-01 11:07:221427semak imbas

Cara menukar aksara Cina kepada nombor Arab dalam PHP: 1. Buat fail contoh PHP 2. Mulakan tatasusunan 3. Pisahkan rentetan kepada unit 4. Tukar rentetan terkumpul kepada nombor dan Darabkan sahaja; oleh unit.

Bagaimana untuk menukar aksara Cina kepada angka Arab dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

php Cara menukar bahasa Cina aksara ke angka Arab?

angka PHP Cina ke Arab

Untuk soalan temuduga, saya menulis satu yang penuh dengan celah dan diperlekehkan oleh orang lain, jadi saya kembali dan menghabiskan sepanjang pagi menulis satu saya mengujinya sendiri dan nampaknya OK.

Benda

Seperti nombor Cina

Tujuh ratus tujuh puluh lapan trilion, empat puluh tujuh trilion, tujuh puluh lima, tujuh ratus empat . Seribu Empat Ratus Lapan Puluh Enam

Jika teks merah dianggap sebagai unit, maka selepas membahagikannya dengan unit ini, bahagian lain akan menjadi bilangan ratusan dan ribuan. Darabkan nombor ini dengan unitnya dan jumlahkannya untuk mendapatkan hasilnya.

Kod

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;
}

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menukar aksara Cina kepada angka Arab dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn