Chinese Character Pinyin Conversion and Gregorian Calendar and Lunar Calendar Conversion Realized by PHP and Their Application Examples

  • 2021-07-06 10:23:27
  • OfStack

This paper collates PHP Chinese phonetic conversion and Gregorian calendar conversion of two functional files, very practical. For example, we can find the address book through the pinyin initials of contact names, navigate large amounts of data through initials, and optimize websites by converting pinyin. The transformation of the public lunar calendar is generally used in the items arranged in the calendar, which is convenient for reminding the festivals of the lunar calendar and so on.

1. PHP Chinese characters to Pinyin

Pinyin. class. php files can convert most Chinese characters into Chinese Pinyin. Of course, there are some rare words that cannot be converted. If you want to convert all Chinese Pinyin, you may need to cooperate with a Chinese character library to achieve it. Using this kind of files can basically meet your project needs. Usage:

 
require_once("Pinyin.class.php");
$pinyin = new Pinyin();
$str = ' Study hard and make progress every day ';
echo $pinyin->strtopin($str);

Output after execution: hao hao xue xi tian tian xiang shang.
If you only want to output the initials of Chinese characters, use:
 
echo $pinyin->strtopin($str,1);

Output after execution: hhxxttxs.

Pinyin. class. php source code:


<?php
class Pinyin{
 private $d = array (
  array (
   "a",
   -20319
  ),
  array (
   "ai",
   -20317
  ),
  array (
   "an",
   -20304
  ),
  array (
   "ang",
   -20295
  ),
  array (
   "ao",
   -20292
  ),
  array (
   "ba",
   -20283
  ),
  array (
   "bai",
   -20265
  ),
  array (
   "ban",
   -20257
  ),
  array (
   "bang",
   -20242
  ),
  array (
   "bao",
   -20230
  ),
  array (
   "bei",
   -20051
  ),
  array (
   "ben",
   -20036
  ),
  array (
   "beng",
   -20032
  ),
  array (
   "bi",
   -20026
  ),
  array (
   "bian",
   -20002
  ),
  array (
   "biao",
   -19990
  ),
  array (
   "bie",
   -19986
  ),
  array (
   "bin",
   -19982
  ),
  array (
   "bing",
   -19976
  ),
  array (
   "bo",
   -19805
  ),
  array (
   "bu",
   -19784
  ),
  array (
   "ca",
   -19775
  ),
  array (
   "cai",
   -19774
  ),
  array (
   "can",
   -19763
  ),
  array (
   "cang",
   -19756
  ),
  array (
   "cao",
   -19751
  ),
  array (
   "ce",
   -19746
  ),
  array (
   "ceng",
   -19741
  ),
  array (
   "cha",
   -19739
  ),
  array (
   "chai",
   -19728
  ),
  array (
   "chan",
   -19725
  ),
  array (
   "chang",
   -19715
  ),
  array (
   "chao",
   -19540
  ),
  array (
   "che",
   -19531
  ),
  array (
   "chen",
   -19525
  ),
  array (
   "cheng",
   -19515
  ),
  array (
   "chi",
   -19500
  ),
  array (
   "chong",
   -19484
  ),
  array (
   "chou",
   -19479
  ),
  array (
   "chu",
   -19467
  ),
  array (
   "chuai",
   -19289
  ),
  array (
   "chuan",
   -19288
  ),
  array (
   "chuang",
   -19281
  ),
  array (
   "chui",
   -19275
  ),
  array (
   "chun",
   -19270
  ),
  array (
   "chuo",
   -19263
  ),
  array (
   "ci",
   -19261
  ),
  array (
   "cong",
   -19249
  ),
  array (
   "cou",
   -19243
  ),
  array (
   "cu",
   -19242
  ),
  array (
   "cuan",
   -19238
  ),
  array (
   "cui",
   -19235
  ),
  array (
   "cun",
   -19227
  ),
  array (
   "cuo",
   -19224
  ),
  array (
   "da",
   -19218
  ),
  array (
   "dai",
   -19212
  ),
  array (
   "dan",
   -19038
  ),
  array (
   "dang",
   -19023
  ),
  array (
   "dao",
   -19018
  ),
  array (
   "de",
   -19006
  ),
  array (
   "deng",
   -19003
  ),
  array (
   "di",
   -18996
  ),
  array (
   "dian",
   -18977
  ),
  array (
   "diao",
   -18961
  ),
  array (
   "die",
   -18952
  ),
  array (
   "ding",
   -18783
  ),
  array (
   "diu",
   -18774
  ),
  array (
   "dong",
   -18773
  ),
  array (
   "dou",
   -18763
  ),
  array (
   "du",
   -18756
  ),
  array (
   "duan",
   -18741
  ),
  array (
   "dui",
   -18735
  ),
  array (
   "dun",
   -18731
  ),
  array (
   "duo",
   -18722
  ),
  array (
   "e",
   -18710
  ),
  array (
   "en",
   -18697
  ),
  array (
   "er",
   -18696
  ),
  array (
   "fa",
   -18526
  ),
  array (
   "fan",
   -18518
  ),
  array (
   "fang",
   -18501
  ),
  array (
   "fei",
   -18490
  ),
  array (
   "fen",
   -18478
  ),
  array (
   "feng",
   -18463
  ),
  array (
   "fo",
   -18448
  ),
  array (
   "fou",
   -18447
  ),
  array (
   "fu",
   -18446
  ),
  array (
   "ga",
   -18239
  ),
  array (
   "gai",
   -18237
  ),
  array (
   "gan",
   -18231
  ),
  array (
   "gang",
   -18220
  ),
  array (
   "gao",
   -18211
  ),
  array (
   "ge",
   -18201
  ),
  array (
   "gei",
   -18184
  ),
  array (
   "gen",
   -18183
  ),
  array (
   "geng",
   -18181
  ),
  array (
   "gong",
   -18012
  ),
  array (
   "gou",
   -17997
  ),
  array (
   "gu",
   -17988
  ),
  array (
   "gua",
   -17970
  ),
  array (
   "guai",
   -17964
  ),
  array (
   "guan",
   -17961
  ),
  array (
   "guang",
   -17950
  ),
  array (
   "gui",
   -17947
  ),
  array (
   "gun",
   -17931
  ),
  array (
   "guo",
   -17928
  ),
  array (
   "ha",
   -17922
  ),
  array (
   "hai",
   -17759
  ),
  array (
   "han",
   -17752
  ),
  array (
   "hang",
   -17733
  ),
  array (
   "hao",
   -17730
  ),
  array (
   "he",
   -17721
  ),
  array (
   "hei",
   -17703
  ),
  array (
   "hen",
   -17701
  ),
  array (
   "heng",
   -17697
  ),
  array (
   "hong",
   -17692
  ),
  array (
   "hou",
   -17683
  ),
  array (
   "hu",
   -17676
  ),
  array (
   "hua",
   -17496
  ),
  array (
   "huai",
   -17487
  ),
  array (
   "huan",
   -17482
  ),
  array (
   "huang",
   -17468
  ),
  array (
   "hui",
   -17454
  ),
  array (
   "hun",
   -17433
  ),
  array (
   "huo",
   -17427
  ),
  array (
   "ji",
   -17417
  ),
  array (
   "jia",
   -17202
  ),
  array (
   "jian",
   -17185
  ),
  array (
   "jiang",
   -16983
  ),
  array (
   "jiao",
   -16970
  ),
  array (
   "jie",
   -16942
  ),
  array (
   "jin",
   -16915
  ),
  array (
   "jing",
   -16733
  ),
  array (
   "jiong",
   -16708
  ),
  array (
   "jiu",
   -16706
  ),
  array (
   "ju",
   -16689
  ),
  array (
   "juan",
   -16664
  ),
  array (
   "jue",
   -16657
  ),
  array (
   "jun",
   -16647
  ),
  array (
   "ka",
   -16474
  ),
  array (
   "kai",
   -16470
  ),
  array (
   "kan",
   -16465
  ),
  array (
   "kang",
   -16459
  ),
  array (
   "kao",
   -16452
  ),
  array (
   "ke",
   -16448
  ),
  array (
   "ken",
   -16433
  ),
  array (
   "keng",
   -16429
  ),
  array (
   "kong",
   -16427
  ),
  array (
   "kou",
   -16423
  ),
  array (
   "ku",
   -16419
  ),
  array (
   "kua",
   -16412
  ),
  array (
   "kuai",
   -16407
  ),
  array (
   "kuan",
   -16403
  ),
  array (
   "kuang",
   -16401
  ),
  array (
   "kui",
   -16393
  ),
  array (
   "kun",
   -16220
  ),
  array (
   "kuo",
   -16216
  ),
  array (
   "la",
   -16212
  ),
  array (
   "lai",
   -16205
  ),
  array (
   "lan",
   -16202
  ),
  array (
   "lang",
   -16187
  ),
  array (
   "lao",
   -16180
  ),
  array (
   "le",
   -16171
  ),
  array (
   "lei",
   -16169
  ),
  array (
   "leng",
   -16158
  ),
  array (
   "li",
   -16155
  ),
  array (
   "lia",
   -15959
  ),
  array (
   "lian",
   -15958
  ),
  array (
   "liang",
   -15944
  ),
  array (
   "liao",
   -15933
  ),
  array (
   "lie",
   -15920
  ),
  array (
   "lin",
   -15915
  ),
  array (
   "ling",
   -15903
  ),
  array (
   "liu",
   -15889
  ),
  array (
   "long",
   -15878
  ),
  array (
   "lou",
   -15707
  ),
  array (
   "lu",
   -15701
  ),
  array (
   "lv",
   -15681
  ),
  array (
   "luan",
   -15667
  ),
  array (
   "lue",
   -15661
  ),
  array (
   "lun",
   -15659
  ),
  array (
   "luo",
   -15652
  ),
  array (
   "ma",
   -15640
  ),
  array (
   "mai",
   -15631
  ),
  array (
   "man",
   -15625
  ),
  array (
   "mang",
   -15454
  ),
  array (
   "mao",
   -15448
  ),
  array (
   "me",
   -15436
  ),
  array (
   "mei",
   -15435
  ),
  array (
   "men",
   -15419
  ),
  array (
   "meng",
   -15416
  ),
  array (
   "mi",
   -15408
  ),
  array (
   "mian",
   -15394
  ),
  array (
   "miao",
   -15385
  ),
  array (
   "mie",
   -15377
  ),
  array (
   "min",
   -15375
  ),
  array (
   "ming",
   -15369
  ),
  array (
   "miu",
   -15363
  ),
  array (
   "mo",
   -15362
  ),
  array (
   "mou",
   -15183
  ),
  array (
   "mu",
   -15180
  ),
  array (
   "na",
   -15165
  ),
  array (
   "nai",
   -15158
  ),
  array (
   "nan",
   -15153
  ),
  array (
   "nang",
   -15150
  ),
  array (
   "nao",
   -15149
  ),
  array (
   "ne",
   -15144
  ),
  array (
   "nei",
   -15143
  ),
  array (
   "nen",
   -15141
  ),
  array (
   "neng",
   -15140
  ),
  array (
   "ni",
   -15139
  ),
  array (
   "nian",
   -15128
  ),
  array (
   "niang",
   -15121
  ),
  array (
   "niao",
   -15119
  ),
  array (
   "nie",
   -15117
  ),
  array (
   "nin",
   -15110
  ),
  array (
   "ning",
   -15109
  ),
  array (
   "niu",
   -14941
  ),
  array (
   "nong",
   -14937
  ),
  array (
   "nu",
   -14933
  ),
  array (
   "nv",
   -14930
  ),
  array (
   "nuan",
   -14929
  ),
  array (
   "nue",
   -14928
  ),
  array (
   "nuo",
   -14926
  ),
  array (
   "o",
   -14922
  ),
  array (
   "ou",
   -14921
  ),
  array (
   "pa",
   -14914
  ),
  array (
   "pai",
   -14908
  ),
  array (
   "pan",
   -14902
  ),
  array (
   "pang",
   -14894
  ),
  array (
   "pao",
   -14889
  ),
  array (
   "pei",
   -14882
  ),
  array (
   "pen",
   -14873
  ),
  array (
   "peng",
   -14871
  ),
  array (
   "pi",
   -14857
  ),
  array (
   "pian",
   -14678
  ),
  array (
   "piao",
   -14674
  ),
  array (
   "pie",
   -14670
  ),
  array (
   "pin",
   -14668
  ),
  array (
   "ping",
   -14663
  ),
  array (
   "po",
   -14654
  ),
  array (
   "pu",
   -14645
  ),
  array (
   "qi",
   -14630
  ),
  array (
   "qia",
   -14594
  ),
  array (
   "qian",
   -14429
  ),
  array (
   "qiang",
   -14407
  ),
  array (
   "qiao",
   -14399
  ),
  array (
   "qie",
   -14384
  ),
  array (
   "qin",
   -14379
  ),
  array (
   "qing",
   -14368
  ),
  array (
   "qiong",
   -14355
  ),
  array (
   "qiu",
   -14353
  ),
  array (
   "qu",
   -14345
  ),
  array (
   "quan",
   -14170
  ),
  array (
   "que",
   -14159
  ),
  array (
   "qun",
   -14151
  ),
  array (
   "ran",
   -14149
  ),
  array (
   "rang",
   -14145
  ),
  array (
   "rao",
   -14140
  ),
  array (
   "re",
   -14137
  ),
  array (
   "ren",
   -14135
  ),
  array (
   "reng",
   -14125
  ),
  array (
   "ri",
   -14123
  ),
  array (
   "rong",
   -14122
  ),
  array (
   "rou",
   -14112
  ),
  array (
   "ru",
   -14109
  ),
  array (
   "ruan",
   -14099
  ),
  array (
   "rui",
   -14097
  ),
  array (
   "run",
   -14094
  ),
  array (
   "ruo",
   -14092
  ),
  array (
   "sa",
   -14090
  ),
  array (
   "sai",
   -14087
  ),
  array (
   "san",
   -14083
  ),
  array (
   "sang",
   -13917
  ),
  array (
   "sao",
   -13914
  ),
  array (
   "se",
   -13910
  ),
  array (
   "sen",
   -13907
  ),
  array (
   "seng",
   -13906
  ),
  array (
   "sha",
   -13905
  ),
  array (
   "shai",
   -13896
  ),
  array (
   "shan",
   -13894
  ),
  array (
   "shang",
   -13878
  ),
  array (
   "shao",
   -13870
  ),
  array (
   "she",
   -13859
  ),
  array (
   "shen",
   -13847
  ),
  array (
   "sheng",
   -13831
  ),
  array (
   "shi",
   -13658
  ),
  array (
   "shou",
   -13611
  ),
  array (
   "shu",
   -13601
  ),
  array (
   "shua",
   -13406
  ),
  array (
   "shuai",
   -13404
  ),
  array (
   "shuan",
   -13400
  ),
  array (
   "shuang",
   -13398
  ),
  array (
   "shui",
   -13395
  ),
  array (
   "shun",
   -13391
  ),
  array (
   "shuo",
   -13387
  ),
  array (
   "si",
   -13383
  ),
  array (
   "song",
   -13367
  ),
  array (
   "sou",
   -13359
  ),
  array (
   "su",
   -13356
  ),
  array (
   "suan",
   -13343
  ),
  array (
   "sui",
   -13340
  ),
  array (
   "sun",
   -13329
  ),
  array (
   "suo",
   -13326
  ),
  array (
   "ta",
   -13318
  ),
  array (
   "tai",
   -13147
  ),
  array (
   "tan",
   -13138
  ),
  array (
   "tang",
   -13120
  ),
  array (
   "tao",
   -13107
  ),
  array (
   "te",
   -13096
  ),
  array (
   "teng",
   -13095
  ),
  array (
   "ti",
   -13091
  ),
  array (
   "tian",
   -13076
  ),
  array (
   "tiao",
   -13068
  ),
  array (
   "tie",
   -13063
  ),
  array (
   "ting",
   -13060
  ),
  array (
   "tong",
   -12888
  ),
  array (
   "tou",
   -12875
  ),
  array (
   "tu",
   -12871
  ),
  array (
   "tuan",
   -12860
  ),
  array (
   "tui",
   -12858
  ),
  array (
   "tun",
   -12852
  ),
  array (
   "tuo",
   -12849
  ),
  array (
   "wa",
   -12838
  ),
  array (
   "wai",
   -12831
  ),
  array (
   "wan",
   -12829
  ),
  array (
   "wang",
   -12812
  ),
  array (
   "wei",
   -12802
  ),
  array (
   "wen",
   -12607
  ),
  array (
   "weng",
   -12597
  ),
  array (
   "wo",
   -12594
  ),
  array (
   "wu",
   -12585
  ),
  array (
   "xi",
   -12556
  ),
  array (
   "xia",
   -12359
  ),
  array (
   "xian",
   -12346
  ),
  array (
   "xiang",
   -12320
  ),
  array (
   "xiao",
   -12300
  ),
  array (
   "xie",
   -12120
  ),
  array (
   "xin",
   -12099
  ),
  array (
   "xing",
   -12089
  ),
  array (
   "xiong",
   -12074
  ),
  array (
   "xiu",
   -12067
  ),
  array (
   "xu",
   -12058
  ),
  array (
   "xuan",
   -12039
  ),
  array (
   "xue",
   -11867
  ),
  array (
   "xun",
   -11861
  ),
  array (
   "ya",
   -11847
  ),
  array (
   "yan",
   -11831
  ),
  array (
   "yang",
   -11798
  ),
  array (
   "yao",
   -11781
  ),
  array (
   "ye",
   -11604
  ),
  array (
   "yi",
   -11589
  ),
  array (
   "yin",
   -11536
  ),
  array (
   "ying",
   -11358
  ),
  array (
   "yo",
   -11340
  ),
  array (
   "yong",
   -11339
  ),
  array (
   "you",
   -11324
  ),
  array (
   "yu",
   -11303
  ),
  array (
   "yuan",
   -11097
  ),
  array (
   "yue",
   -11077
  ),
  array (
   "yun",
   -11067
  ),
  array (
   "za",
   -11055
  ),
  array (
   "zai",
   -11052
  ),
  array (
   "zan",
   -11045
  ),
  array (
   "zang",
   -11041
  ),
  array (
   "zao",
   -11038
  ),
  array (
   "ze",
   -11024
  ),
  array (
   "zei",
   -11020
  ),
  array (
   "zen",
   -11019
  ),
  array (
   "zeng",
   -11018
  ),
  array (
   "zha",
   -11014
  ),
  array (
   "zhai",
   -10838
  ),
  array (
   "zhan",
   -10832
  ),
  array (
   "zhang",
   -10815
  ),
  array (
   "zhao",
   -10800
  ),
  array (
   "zhe",
   -10790
  ),
  array (
   "zhen",
   -10780
  ),
  array (
   "zheng",
   -10764
  ),
  array (
   "zhi",
   -10587
  ),
  array (
   "zhong",
   -10544
  ),
  array (
   "zhou",
   -10533
  ),
  array (
   "zhu",
   -10519
  ),
  array (
   "zhua",
   -10331
  ),
  array (
   "zhuai",
   -10329
  ),
  array (
   "zhuan",
   -10328
  ),
  array (
   "zhuang",
   -10322
  ),
  array (
   "zhui",
   -10315
  ),
  array (
   "zhun",
   -10309
  ),
  array (
   "zhuo",
   -10307
  ),
  array (
   "zi",
   -10296
  ),
  array (
   "zong",
   -10281
  ),
  array (
   "zou",
   -10274
  ),
  array (
   "zu",
   -10270
  ),
  array (
   "zuan",
   -10262
  ),
  array (
   "zui",
   -10260
  ),
  array (
   "zun",
   -10256
  ),
  array (
   "zuo",
   -10254
  )
 );  function g($num) {
  if ($num > 0 && $num < 160) {
   return chr($num);
  }
  elseif ($num < -20319 || $num > -10247) {
   return "";
  } else {
   for ($i = count($this->d) - 1; $i >= 0; $i--) {
    if ($this->d[$i][1] <= $num)
     break;
   }
   return $this->d[$i][0];
  }
 }  function c($str) {
  $ret = "";
  for ($i = 0; $i < strlen($str); $i++) {
   $p = ord(substr($str, $i, 1));    if ($p > 160) {     $q = ord(substr($str, ++ $i, 1));     $p = $p * 256 + $q -65536;    }
   $ret .= $this->g($p);   }
  $ret = substr($ret, 0, 1);
  return $ret;
 }  function f($str) {
  $ret = "";
  for ($i = 0; $i < strlen($str); $i++) {
   $p = ord(substr($str, $i, 1));
   if ($p > 160) {
    $q = ord(substr($str, ++ $i, 1));
    $p = $p * 256 + $q -65536;
   }
   $ret .= $this->g($p);
  }
  return $ret;
 }  /*
 PHP Interception UTF-8 Encoded Chinese and English strings
 */
 function utf8_substr($str, $from, $len) {
  return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' . '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str);
 }  /*
  Convert Chinese and English strings into pinyin
 */
 function strtopin($chinese,$type=0) {
  $i = 0;
  $pinyin = "";
  $arr = array ();
  while (1) {
   $str = $this->utf8_substr($chinese, $i, 1);
   if (!empty ($str)) {
    $arr[$i] = $str;
    $str = iconv("utf-8", "gb2312", $str);
    if($type==1){ // Convert to initials
     $pinyin .= $this->c($str);
    }else{     // Convert to full spelling
     $pinyin .= $this->f($str)." ";
    }
    $i = $i +1;
   } else
    break;
  }
  return $pinyin;
 }
}
?>

2. PHP Gregorian calendar and lunar calendar conversion
The algorithm of transforming Gregorian calendar into lunar calendar is very complex, involving lunar calendar, dry branch calendar, zodiac and so on. There are many algorithms provided on the network, and one Lunar. class. php compiled in this paper can realize the mutual conversion function between public and lunar calendar. Usage:
 
require_once("Lunar.class.php");
$lunar = new Lunar();
 
$date = $lunar->convertLunarToSolar(2013,8,17); // Gregorian calendar to lunar calendar
print_r($date);

Output array after execution:
 
Array ( [0] => 2 Zero 13 [1] => 7 Month [2] => 101 [3] => Decyl Si  
[4] => 7 [5] => 11 [6] => Snake [7] => 0 ) 

If you want to convert the lunar calendar to the Gregorian calendar, use:
 
$date = $lunar->convertLunarToSolar(2013,8,17); // Lunar calendar to Gregorian calendar
print_r($date);

Output array after execution:
 
Array ( [0] => 2013 [1] => 09 [2] => 21 ) 

Lunar. class. php source code:


<?php
class Lunar {
   var $MIN_YEAR = 1891;
    var $MAX_YEAR = 2100;
    var $lunarInfo = array(
        array(0,2,9,21936),array(6,1,30,9656),array(0,2,17,9584),array(0,2,6,21168),array(5,1,26,43344),array(0,2,13,59728),
        array(0,2,2,27296),array(3,1,22,44368),array(0,2,10,43856),array(8,1,30,19304),array(0,2,19,19168),array(0,2,8,42352),
        array(5,1,29,21096),array(0,2,16,53856),array(0,2,4,55632),array(4,1,25,27304),array(0,2,13,22176),array(0,2,2,39632),
        array(2,1,22,19176),array(0,2,10,19168),array(6,1,30,42200),array(0,2,18,42192),array(0,2,6,53840),array(5,1,26,54568),
        array(0,2,14,46400),array(0,2,3,54944),array(2,1,23,38608),array(0,2,11,38320),array(7,2,1,18872),array(0,2,20,18800),
        array(0,2,8,42160),array(5,1,28,45656),array(0,2,16,27216),array(0,2,5,27968),array(4,1,24,44456),array(0,2,13,11104),
        array(0,2,2,38256),array(2,1,23,18808),array(0,2,10,18800),array(6,1,30,25776),array(0,2,17,54432),array(0,2,6,59984),
        array(5,1,26,27976),array(0,2,14,23248),array(0,2,4,11104),array(3,1,24,37744),array(0,2,11,37600),array(7,1,31,51560),
        array(0,2,19,51536),array(0,2,8,54432),array(6,1,27,55888),array(0,2,15,46416),array(0,2,5,22176),array(4,1,25,43736),
        array(0,2,13,9680),array(0,2,2,37584),array(2,1,22,51544),array(0,2,10,43344),array(7,1,29,46248),array(0,2,17,27808),
        array(0,2,6,46416),array(5,1,27,21928),array(0,2,14,19872),array(0,2,3,42416),array(3,1,24,21176),array(0,2,12,21168),
        array(8,1,31,43344),array(0,2,18,59728),array(0,2,8,27296),array(6,1,28,44368),array(0,2,15,43856),array(0,2,5,19296),
        array(4,1,25,42352),array(0,2,13,42352),array(0,2,2,21088),array(3,1,21,59696),array(0,2,9,55632),array(7,1,30,23208),
        array(0,2,17,22176),array(0,2,6,38608),array(5,1,27,19176),array(0,2,15,19152),array(0,2,3,42192),array(4,1,23,53864),
        array(0,2,11,53840),array(8,1,31,54568),array(0,2,18,46400),array(0,2,7,46752),array(6,1,28,38608),array(0,2,16,38320),
        array(0,2,5,18864),array(4,1,25,42168),array(0,2,13,42160),array(10,2,2,45656),array(0,2,20,27216),array(0,2,9,27968),
        array(6,1,29,44448),array(0,2,17,43872),array(0,2,6,38256),array(5,1,27,18808),array(0,2,15,18800),array(0,2,4,25776),
        array(3,1,23,27216),array(0,2,10,59984),array(8,1,31,27432),array(0,2,19,23232),array(0,2,7,43872),array(5,1,28,37736),
        array(0,2,16,37600),array(0,2,5,51552),array(4,1,24,54440),array(0,2,12,54432),array(0,2,1,55888),array(2,1,22,23208),
        array(0,2,9,22176),array(7,1,29,43736),array(0,2,18,9680),array(0,2,7,37584),array(5,1,26,51544),array(0,2,14,43344),
        array(0,2,3,46240),array(4,1,23,46416),array(0,2,10,44368),array(9,1,31,21928),array(0,2,19,19360),array(0,2,8,42416),
        array(6,1,28,21176),array(0,2,16,21168),array(0,2,5,43312),array(4,1,25,29864),array(0,2,12,27296),array(0,2,1,44368),
        array(2,1,22,19880),array(0,2,10,19296),array(6,1,29,42352),array(0,2,17,42208),array(0,2,6,53856),array(5,1,26,59696),
        array(0,2,13,54576),array(0,2,3,23200),array(3,1,23,27472),array(0,2,11,38608),array(11,1,31,19176),array(0,2,19,19152),
        array(0,2,8,42192),array(6,1,28,53848),array(0,2,15,53840),array(0,2,4,54560),array(5,1,24,55968),array(0,2,12,46496),
        array(0,2,1,22224),array(2,1,22,19160),array(0,2,10,18864),array(7,1,30,42168),array(0,2,17,42160),array(0,2,6,43600),
        array(5,1,26,46376),array(0,2,14,27936),array(0,2,2,44448),array(3,1,23,21936),array(0,2,11,37744),array(8,2,1,18808),
        array(0,2,19,18800),array(0,2,8,25776),array(6,1,28,27216),array(0,2,15,59984),array(0,2,4,27424),array(4,1,24,43872),
        array(0,2,12,43744),array(0,2,2,37600),array(3,1,21,51568),array(0,2,9,51552),array(7,1,29,54440),array(0,2,17,54432),
        array(0,2,5,55888),array(5,1,26,23208),array(0,2,14,22176),array(0,2,3,42704),array(4,1,23,21224),array(0,2,11,21200),
        array(8,1,31,43352),array(0,2,19,43344),array(0,2,7,46240),array(6,1,27,46416),array(0,2,15,44368),array(0,2,5,21920),
        array(4,1,24,42448),array(0,2,12,42416),array(0,2,2,21168),array(3,1,22,43320),array(0,2,9,26928),array(7,1,29,29336),
        array(0,2,17,27296),array(0,2,6,44368),array(5,1,26,19880),array(0,2,14,19296),array(0,2,3,42352),array(4,1,24,21104),
        array(0,2,10,53856),array(8,1,30,59696),array(0,2,18,54560),array(0,2,7,55968),array(6,1,27,27472),array(0,2,15,22224),
        array(0,2,5,19168),array(4,1,25,42216),array(0,2,12,42192),array(0,2,1,53584),array(2,1,21,55592),array(0,2,9,54560)
    );
    /**
     * 将阳历转换为阴历
     * @param year 公历-年
     * @param month 公历-月
     * @param date 公历-日
     */
    function convertSolarToLunar($year,$month,$date){
        //debugger;
        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
        if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){
            return array(1891,'正月','初1','辛卯',1,1,'兔');
        }
        return $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2]));
    }     function convertSolarMonthToLunar($year,$month) {
        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
        if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){
            return array(1891,'正月','初1','辛卯',1,1,'兔');
        }
        $month_days_ary = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        $dd = $month_days_ary[$month];
        if($this->isLeapYear($year) && $month == 2) $dd++;
        $lunar_ary = array();
        for ($i = 1; $i < $dd; $i++) {
            $array = $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2]));
            $array[] = $year . '-' . $month . '-' . $i;
            $lunar_ary[$i] = $array;
        }
        return $lunar_ary;
    }
    /**
    * 将阴历转换为阳历
    * @param year 阴历-年
    * @param month 阴历-月,闰月处理:例如如果当年闰5月,那么第2个5月就传6月,相当于阴历有13个月,只是有的时候第13个月的天数为0
    * @param date 阴历-日
    */
    function convertLunarToSolar($year,$month,$date){
        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
        $between = $this->getDaysBetweenLunar($year,$month,$date);
        $res = mktime(0,0,0,$yearData[1],$yearData[2],$year);
        $res = date('Y-m-d', $res+$between*24*60*60);
        $day    = explode('-', $res);
        $year    = $day[0];
        $month= $day[1];
        $day    = $day[2];
        return array($year, $month, $day);
    }
    /**
     * 判断是否是闰年
     * @param year
     */
    function isLeapYear($year){
        return (($year%4==0 && $year%100 !=0) || ($year%400==0));
    }
    /**
     * 获取干支纪年
     * @param year
     */
    function getLunarYearName($year){
         $sky = array('庚','辛','壬','癸','甲','乙','丙','丁','戊','己');
         $earth = array('申','酉','戌','亥','子','丑','寅','卯','辰','巳','午','未');
         $year = $year.'';
         return $sky[$year{3}].$earth[$year%12];
    }
    /**
     * 根据阴历年获取生肖
     * @param year 阴历年
     */
    function getYearZodiac($year){
         $zodiac = array('猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊');
         return $zodiac[$year%12];
    }
    /**
     * 获取阳历月份的天数
     * @param year 阳历-年
     * @param month 阳历-月
     */
    function getSolarMonthDays($year,$month){
         $monthHash = array('1'=>31,'2'=>$this->isLeapYear($year)?29:28,'3'=>31,'4'=>30,'5'=>31,'6'=>30,'7'=>31,'8'=>31,'9'=>30,'10'=>31,'11'=>30,'12'=>31);
         return $monthHash["$month"];
    }
    /**
     * 获取阴历月份的天数
     * @param year 阴历-年
     * @param month 阴历-月,从1月开始
     */
    function getLunarMonthDays($year,$month){
         $monthData = $this->getLunarMonths($year);
         return $monthData[$month-1];
    }
    /**
     * 获取阴历每月的天数的数组
     * @param year
     */
    function getLunarMonths($year){
        $yearData = $this->lunarInfo[$year - $this->MIN_YEAR];
        $leapMonth = $yearData[0];
        $bit = decbin($yearData[3]);
        for ($i = 0; $i < strlen($bit);$i ++) {
            $bitArray[$i] = substr($bit, $i, 1);
        }
        for($k=0,$klen=16-count($bitArray);$k<$klen;$k++){
            array_unshift($bitArray, '0');
        }
        $bitArray = array_slice($bitArray,0,($leapMonth==0?12:13));
        for($i=0; $i<count($bitArray); $i++){
            $bitArray[$i] = $bitArray[$i] + 29;
        }
        return $bitArray;
    }
    /**
     * 获取农历每年的天数
 &

Related articles: