获取中文字符串中的数字并转换成阿拉伯数字

获取中文字符串中的数字并转换成阿拉伯数字

<?php
function charN2intN($str, $solve_discrete = true)
{
   
    //个位数字
    $arr_char_unit = array('1一壹','2二贰两','3三叁','4四肆','5五伍','6六陆','7七柒','8八捌','9九玖');
    //计数单位
    $arr_char_digit = array('0零','十拾','百佰','千仟','万','亿');

    //提取数字
    $temp_arr_match_num = "1一壹2二贰两3三叁4四肆5五伍6六陆7七柒8八捌9九玖0零十拾百佰千仟万亿";
    $temp_len = iconv_strlen($str,'utf-8');
    $temp_ans = "";
    $temp_start = false;
    for($i = 0;$i < $temp_len;$i++)
    {
        $temp_char = mb_substr($str,$i,1,'utf-8');
        if((stripos($temp_arr_match_num, $temp_char) > -1))
        {
            $temp_start = true;
            $temp_ans .= $temp_char;
        }
        else if(!$solve_discrete && $temp_start)
        {
            //$solve_sp:false,只处理连续的数
            break;
        }
    }

    $str = $temp_ans;
    $str_len = iconv_strlen($str,'utf-8');

    //结构编码
    $objs_code = "";
    //结构
    $objs = [];
    for($i = 0;$i < $str_len;$i++)
    {
        //当前字符
        $temp_char = mb_substr($str,$i,1,'utf-8');

        //是否数字
        $isNum = false;
        for($index = 0 ; $index < count($arr_char_unit);$index++)
        {
            if((stripos($arr_char_unit[$index], $temp_char) > -1))
            {
                $objs_code .='u';
                $objs[] = [
                    'type' => 'unit',
                    'value' => $index+1
                ];
                $isNum = true;
                break;
            }
        }

        if($isNum){
  continue;}

        //是否计数单位
        for($index = 0 ; $index < count($arr_char_digit);$index++)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值