Thinkphp将中文年份转换为数字年份的问题

  今天遇到一个问题:想将中文年份转换为数字年份,例如:“二零一六”-->‘2016’。

  在网上搜了一下,没找到可以直接处理的函数(也许是我搜索信息的能力有限吧>_<)。那我就自己写一个呗,有点小激动呢。但是写完,发现在后面还是有点小问题。写得不好的地方,请各路大神批评指点哈~

 1  /**
 2   *将汉字的年份转换为数字年份
 3   *@param    string    $string 汉字年份
 4   *@return  string  数字年份
 5   */
 6   
 7 function transformYearToNum($string){
 8     $mb_str = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');    
 9     $num_str = "";
10     for($i = 0;$i < strlen($string); $i++){
11         $str = mb_substr($string,$i,1);
12         if(in_array($str, $mb_str)){
13             $key = array_keys($mb_str, $str);
14             $num_str .= $key[0];
15         }
16     }
17 
18     return date('Y',  strtotime( $num_str));
19 }

上面的程序我在本地上测试,没什么问题。但是当我放到服务器上的thinkphp3.2.3的项目上时,就有了问题,if语句始终执行不了,后来我改成了这样的

 1  /**
 2   *将汉字的年份转换为数字年份
 3   *@param    string    汉字年份
 4   *@return  string  数字年份
 5   */
 6   
 7 function transformYearToNum($string){
 8     $mb_str = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');    
 9     $num_str = "";
10     for($i = 0;$i < strlen($string); $i+=3){ //这里也改成加 3 
11         $str = mb_substr($string,$i,3); //这里 1 改成 3,
12         if(in_array($str, $mb_str)){
13             $key = array_keys($mb_str, $str);
14             $num_str .= $key[0];
15         }
16     }
17     return date('Y', strtotime($num_str));
18 }

因为第一种方式截取出来的时候是乱码,然后我想到会不会是一个中文占三个字符,所以用第二种方式,结果可行。虽然免强可用,但对于健壮性也没考虑。还有我现在也不知道为什么本地第一种可以,在服务器上用tp3.2.3就不行。

第一次写博文,在这里给自己留下一个疑问吧,自己也是刚用tp3.2.3不久,请各路大神多多指教哈。

 

转载于:https://www.cnblogs.com/yuanwenha/p/6169462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值