“1910-09-09”的日期各式转换为“一九一零年九月九日”
- <?php
- /*
- 18、请使用一句话将类似“1910-09-09”的日期各式转换为“一九一零年九月九日”这样的各式。
- (需要有通用性,是不是一句话不是关键,但不允许使用if\switch\while\for等语句)。
- *系统环境:windows/linux
- *编译环境:php4/php5
- *输入参数:存放在in.txt,多个参数时空格分隔
- 参数1是一个日期yyyy-mm-dd
- 例如格式:1910-09-09
- 1910-11-13
- 输出:out.txt
- */
- $params=getParams(1);
- $argv0=trim($params[0]);
- //检查参数1
- preg_match_all("/^(\d{4})\-(\d{2})\-(\d{2})$/i", $argv0,$matches)?"":error_msg("params 1 must be format yyyy-mm-dd;");
- $chineseNum=array('零','一','二','三','四','五','六','七','八','九');
- $chineseNumTen=array('','十','二十','三十','四十','五十','六十','七十','八十','九十');
- $month=str_replace(array_keys($chineseNumTen), $chineseNumTen,floor($matches[2][0]/10)).($matches[2][0]%10);
- $day=str_replace(array_keys($chineseNumTen), $chineseNumTen,floor($matches[3][0]/10)).($matches[3][0]%10);
- $enDate=$matches[1][0]."年".$month."月".$day."日";
- $chineseDate=str_replace(array_keys($chineseNum), $chineseNum,$enDate);
- //输出结果
- output($chineseDate,true);
- error_msg("execute success");
- /*
- 从in.txt里读取参数
- */
- function getParams($paramNum)
- {
- $in=file_get_contents("in.txt");
- if($in===FALSE){
- error_msg("cannot read in.txt,please check in.txt exists\n");
- }
- $in=preg_replace("/(\s+)/i", " ", $in);
- //多个参数时,按照空格分隔
- $parms=split(" ",trim($in));
- if($parms===FALSE)
- {
- error_msg("cannot get param from in.txt\n");
- }
- if(count($parms) < $paramNum)
- {
- error_msg("it needs $paramNum params\n");
- }
- return $parms;
- }
- /*
- 把结果输出到输出文件里
- 当isClean=true时清空out.txt
- */
- function output($msg,$isClean=false)
- {
- if($isClean)
- {
- $handle = fopen('out.txt', 'w');
- fclose($handle);
- }
- error_log($msg."\n", 3, "out.txt");
- }
- /*
- 输入错误信息
- 如果$is_exit表示输入信息后退出
- */
- function error_msg($msg,$is_exit=true)
- {
- if($is_exit)
- die($msg."\n");
- else
- echo $msg."\n";
- }
- ?>
本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/618840,如需转载请自行联系原作者