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

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

  /**
*将汉字的年份转换为数字年份
*@param string $string 汉字年份
*@return string 数字年份
*/ function transformYearToNum($string){
$mb_str = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$num_str = "";
for($i = 0;$i < strlen($string); $i++){
$str = mb_substr($string,$i,1);
if(in_array($str, $mb_str)){
$key = array_keys($mb_str, $str);
$num_str .= $key[0];
}
} return date('Y', strtotime( $num_str));
}

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

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

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

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

Thinkphp将中文年份转换为数字年份的问题的更多相关文章

  1. 剑指Offer面试题:35.将字符串转换为数字

    一.题目:将字符串转换为数字 题目:写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 二.代码实现 (1)考虑输入的字符串是否是NULL.空字符 ...

  2. Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字

    不说废话,贴代码: CREATE OR REPLACE FUNCTION to_time(sec IN NUMBER) RETURN VARCHAR2 IS /*把秒转成时分秒格式 auth lzpo ...

  3. SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)

    在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名)   例如:select convert(int,'3')2. cast(字段名 as i ...

  4. Swift3.0语言教程字符串转换为数字值

    Swift3.0语言教程字符串转换为数字值 Swift3.0语言教程字符串转换为数字值,在NSString中,开发者可以将字符串转换为数字值,通过这些数字值可以实现一些功能,如加法运算.减法运算等.数 ...

  5. 禁止输入中文 与 禁止输入数字在phonegap api环境效果

    例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  6. C语言中将字符串转换为数字的方法

    C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型.长整型.浮点型等)的数字.以下是用atoi()函数将字符串转换为整数的一个例子: # include <stdio. h># ...

  7. js字符串转换为数字 总结

    a. 将一个字符串转换为数字的一种缺少些技巧但是很清楚明白的方法就是:把Number()构造函数作为一个函数来调用:  var number = Number(string_value); b. pa ...

  8. JavaScript字符串转换为数字

    今天在工作中碰到了一个问题,要将字符串转换为数字,否则函数不能正常工作, 特地研究了下,写了2个函数,供大家参考,代码如下: /** * 将字符串转换为数字 * @param {Object} str ...

  9. php urlencode函数 (中文字符转换为十六进制)

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...

随机推荐

  1. http2.0 相对于 http1.1的优势

    1.http2.0完全是多路复用的,只需一个连接就可实现并行 可以将不同的请求夹杂在一起,只需一个连接就能加载一个页面. 2.可以让服务器将响应主动推动到客户端缓存中 当浏览器请求一个网页时,服务器除 ...

  2. Spring 源码解读 推荐流程

    Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.ja ...

  3. poj 2041 Unreliable Message 字符串处理

    水的问题.直接附着到代码. //poj 2041 //sep9 #include <iostream> using namespace std; char mode[128]; char ...

  4. mysql三种binlog日志的理解

    最近,一直在纠结要不要改数据库binlog的日志格式,原先用的是row格式,导致数据库binlog日志较大,磁盘空间本来也不是很大,所以就想看看能不能改变binlog日志.在该binlog日志之前,先 ...

  5. post请求和get请求的区别

    1:如果表单是以post方式发送,那么表单中的数据会放在请求报文体中,发送到服务端.但是如果是以get方式提交表单,那么表单中用户输入的数据都是以URL地址的方式发送到服务端. 2:在服务端接收数据时 ...

  6. (转)通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证

    通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证 说明:   请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用 ...

  7. Material 字体样式与排版

    Material 字体样式与排版 Google Material 设计规范文档 Style– Typography 字号 再好的布局也会被过多的字号和样式会毁掉.要规定好在这个布局上合适的 字号集合 ...

  8. 8 Hbase get方式获取数据

    package com.hikvision.hbase.vertify.test; import org.apache.hadoop.conf.Configuration; import org.ap ...

  9. hdu 5586 sum

    Problem Description There is a number sequence A1,A2....An,you can select a interval [l,r] or not,al ...

  10. hdu 1262寻找素数对

    Problem Description 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数. 做好了这 ...