Thinkphp将中文年份转换为数字年份的问题
今天遇到一个问题:想将中文年份转换为数字年份,例如:“二零一六”-->‘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将中文年份转换为数字年份的问题的更多相关文章
- 剑指Offer面试题:35.将字符串转换为数字
一.题目:将字符串转换为数字 题目:写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 二.代码实现 (1)考虑输入的字符串是否是NULL.空字符 ...
- Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字
不说废话,贴代码: CREATE OR REPLACE FUNCTION to_time(sec IN NUMBER) RETURN VARCHAR2 IS /*把秒转成时分秒格式 auth lzpo ...
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- Swift3.0语言教程字符串转换为数字值
Swift3.0语言教程字符串转换为数字值 Swift3.0语言教程字符串转换为数字值,在NSString中,开发者可以将字符串转换为数字值,通过这些数字值可以实现一些功能,如加法运算.减法运算等.数 ...
- 禁止输入中文 与 禁止输入数字在phonegap api环境效果
例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- C语言中将字符串转换为数字的方法
C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型.长整型.浮点型等)的数字.以下是用atoi()函数将字符串转换为整数的一个例子: # include <stdio. h># ...
- js字符串转换为数字 总结
a. 将一个字符串转换为数字的一种缺少些技巧但是很清楚明白的方法就是:把Number()构造函数作为一个函数来调用: var number = Number(string_value); b. pa ...
- JavaScript字符串转换为数字
今天在工作中碰到了一个问题,要将字符串转换为数字,否则函数不能正常工作, 特地研究了下,写了2个函数,供大家参考,代码如下: /** * 将字符串转换为数字 * @param {Object} str ...
- php urlencode函数 (中文字符转换为十六进制)
urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...
随机推荐
- testng xml 示例
TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...
- Laravel-表单篇-controller
(慕课网_轻松学会Laravel-表单篇_天秤vs永恒老师_http://www.imooc.com/learn/699) Controller 1.Controller-Request //Requ ...
- JavaScript 滚动页面到指定元素位置
页面评论功能,当评论较多时,有时须要滚动到评论头部. 能够使用scrollTop方法,加上一点延时动画(animate),可訪问在线演示,代码大体例如以下: <html> <scri ...
- Android AdapterView View的复用机制 分析
对于ListView.GridView相信大家都不陌生,重写个BaseView,实现对于的几个方法,然后就完毕了我们的界面展示.而且在大部分情况下,我们载入特别多的Item也不会发生OOM,大家也都明 ...
- Sysbench - 一种系统性能benchmark
SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1 ...
- 在struts2的action中操作域对象(request、session)
在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...
- roleManager 元素(ASP.NET 设置架构),我是因为SSL弱密码(转)
为角色管理配置应用程序. 此元素是 .NET Framework 2.0 版中的新元素. configuration 元素(常规设置架构) system.web 元素(ASP.NET 设置架构) ...
- mysql grant all privileges on
遇到了 SQLException: access denied for @'localhost' (using password: no) 解决办法 grant all privileges on * ...
- <Win32_5>深入浅出Win32的计时器
说起时间,对于我们搞IT的人来说,那是要多重要有多重要.我觉得有价值的时间是给有抱负和有才能的人准备的,因为他们会充分利用,不会让时间失望…… 呵呵,有点儿说远了,还是回归主题吧 Win32的计时器其 ...
- seajs模块压缩问题
在优化整理项目代码时,想使用seajs来把代码模块化.看了下官方5分钟上手教程,觉得很不错,也没多想就一直开发下去了,也没出什么问题.等一同事说把代码打包个放到设备上去测试一下,发现怎么也跑不起来,郁 ...