この記事では、PHP 漢字ピンイン変換と西暦と旧暦の変換のための 2 つの機能ファイルをまとめました。これらは非常に実用的です。たとえば、アドレス帳を検索する場合、連絡先の名前のピンインのイニシャルで検索したり、イニシャルで大量のデータをナビゲートしたり、ピンインを変換して Web サイトを最適化したりできます。公共の旧暦変換は、通常、旧暦の祭りのリマインダーなどを容易にするためのカレンダー スケジュール プロジェクトで使用されます。
1. PHP で中国語の文字をピンインに変換します
Pinyin.class.php ファイルは、ほとんどの中国語の文字を中国語のピンインに変換できます。もちろん、すべての中国語の文字をピンインに変換したい場合は、中国語の文字ライブラリを使用する必要がある場合があります。これを実現するには、このタイプのファイルを使用します。基本的にプロジェクトのニーズを満たすことができます。使用法:
コードは次のとおりです: 関数 g($num) { 関数 c($str) { if ($p > 160) { $q = ord(substr($str, ++ $i, 1)); $p = $p * 256 + $q -65536; } } 関数 f($str) { /* /*
クラスピンイン{
プライベート $d = 配列 (
配列 (
「あ」、
-20319
)、
配列 (
「あい」、
-20317
)、
配列 (
「あん」、
-20304
)、
配列 (
「アン」、
-20295
)、
配列 (
「あお」、
-20292
)、
配列 (
「ば」
-20283
)、
配列 (
「バイ」、
-20265
)、
配列 (
「禁止」
-20257
)、
配列 (
「バン」
-20242
)、
配列 (
「バオ」
-20230
)、
配列 (
「ベイ」
-20051
)、
配列 (
「ベン」
-20036
)、
配列 (
「ベン」、
-20032
)、
配列 (
「び」、
-20026
)、
配列 (
「ビアン」、
-20002
)、
配列 (
「ビアオ」、
-19990
)、
配列 (
「びー」
-19986
)、
配列 (
「ビン」、
-19982
)、
配列 (
「ビング」、
-19976
)、
配列 (
「ぼー」
-19805
)、
配列 (
「ぶ」
-19784
)、
配列 (
「か」、
-19775
)、
配列 (
「カイ」、
-19774
)、
配列 (
「できる」、
-19763
)、
配列 (
「カン」、
-19756
)、
配列 (
「曹」、
-19751
)、
配列 (
「せ」、
-19746
)、
配列 (
「セン」、
-19741
)、
配列 (
「ちゃ」
-19739
)、
配列 (
「チャイ」、
-19728
)、
配列 (
「ちゃん」
-19725
)、
配列 (
「チャン」、
-19715
)、
配列 (
「チャオ」、
-19540
)、
配列 (
「ちぇ」
-19531
)、
配列 (
「チェン」、
-19525
)、
配列 (
「チェン」、
-19515
)、
配列 (
「ち」、
-19500
)、
配列 (
「チョン」、
-19484
)、
配列 (
「ちょう」
-19479
)、
配列 (
「ちゅ」
-19467
)、
配列 (
「ちゅあい」、
-19289
)、
配列 (
「チュアン」、
-19288
)、
配列 (
「チュアン」
-19281
)、
配列 (
「チュイ」
-19275
)、
配列 (
「チュン」
-19270
)、
配列 (
「中央」、
-19263
)、
配列 (
「シ」、
-19261
)、
配列 (
「コン」、
-19249
)、
配列 (
「クー」、
-19243
)、
配列 (
「く」、
-19242
)、
配列 (
「どうやって」、
-19238
)、
配列 (
「キュイ」、
-19235
)、
配列 (
「クン」、
-19227
)、
配列 (
「クオ」
-19224
)、
配列 (
「だ」
-19218
)、
配列 (
「だい」
-19212
)、
配列 (
「ダン」
-19038
)、
配列 (
「ダン」、
-19023
)、
配列 (
「だお」、
-19018
)、
配列 (
「の」
-19006
)、
配列 (
「デン」、
-19003
)、
配列 (
「言って」
-18996
)、
配列 (
「ディアン」、
-18977
)、
配列 (
「ディアオ」、
-18961
)、
配列 (
「死ね」
-18952
)、
配列 (
「ディン」、
-18783
)、
配列 (
「ディウ」、
-18774
)、
配列 (
「ドン」
-18773
)、
配列 (
「ドゥ」、
-18763
)、
配列 (
「ドゥ」、
-18756
)、
配列 (
「ドゥアン」、
-18741
)、
配列 (
「ドゥイ」、
-18735
)、
配列 (
「ダン」、
-18731
)、
配列 (
「デュオ」、
-18722
)、
配列 (
「え」、
-18710
)、
配列 (
「で」、
-18697
)、
配列 (
「えー」、
-18696
)、
配列 (
「ファ」、
-18526
)、
配列 (
「ファン」、
-18518
)、
配列 (
「牙」、
-18501
)、
配列 (
「フェイ」
-18490
)、
配列 (
「フェン」、
-18478
)、
配列 (
「フォン」、
-18463
)、
配列 (
「フォ」、
-18448
)、
配列 (
「フォー」、
-18447
)、
配列 (
「ふ」
-18446
)、
配列 (
「が」、
-18239
)、
配列 (
「ガイ」、
-18237
)、
配列 (
「ガン」
-18231
)、
配列 (
「ギャング」、
-18220
)、
配列 (
「ガオ」
-18211
)、
配列 (
「げ」、
-18201
)、
配列 (
「ゲイ」、
-18184
)、
配列 (
「ゲン」
-18183
)、
配列 (
「ゲン」、
-18181
)、
配列 (
「ゴング」
-18012
)、
配列 (
「ごう」
-17997
)、
配列 (
「ぐ」、
-17988
)、
配列 (
「グア」
-17970
)、
配列 (
「グアイ」、
-17964
)、
配列 (
「グアン」
-17961
)、
配列 (
「グァン」
-17950
)、
配列 (
「ぐい」
-17947
)、
配列 (
「銃」、
-17931
)、
配列 (
「グー」
-17928
)、
配列 (
「はぁ」
-17922
)、
配列 (
「ハイ」
-17759
)、
配列 (
「ハン」
-17752
)、
配列 (
「ハング」、
-17733
)、
配列 (
「ハオ」、
-17730
)、
配列 (
「彼」
-17721
)、
配列 (
「へい」
-17703
)、
配列 (
「鶏」、
-17701
)、
配列 (
「ヘン」、
-17697
)、
配列 (
「ホン」
-17692
)、
配列 (
「ほう」、
-17683
)、
配列 (
「ふー」
-17676
)、
配列 (
「はぁ」
-17496
)、
配列 (
「ファイ」、
-17487
)、
配列 (
「フアン」、
-17482
)、
配列 (
「黄」、
-17468
)、
配列 (
「ホイ」、
-17454
)、
配列 (
「ふん」
-17433
)、
配列 (
「ふー」
-17427
)、
配列 (
「じ」
-17417
)、
配列 (
「ジア」、
-17202
)、
配列 (
「ジャイアン」
-17185
)、
配列 (
「ジャン」、
-16983
)、
配列 (
「ジャオ」、
-16970
)、
配列 (
「ジー」、
-16942
)、
配列 (
「ジン」
-16915
)、
配列 (
「ジン」、
-16733
)、
配列 (
「ジオング」、
-16708
)、
配列 (
「ジウ」
-16706
)、
配列 (
「ジュ」、
-16689
)、
配列 (
「ジュアン」
-16664
)、
配列 (
「歌」、
-16657
)、
配列 (
「ひとつ」、
-16647
)、
配列 (
「車」、
-16474
)、
配列 (
「食べる」
-16470
)、
配列 (
「ただ」
-16465
)、
配列 (
「あなた」、
-16459
)、
配列 (
「あなた」、
-16452
)、
配列 (
「私は」
-16448
)、
配列 (
「できる」、
-16433
)、
配列 (
「あなた」
-16429
)、
配列 (
「あなた」
-16427
)、
配列 (
「あなた」、
-16423
)、
配列 (
「私に」、
-16419
)、
配列 (
「はい」、
-16412
)、
配列 (
「ここ」、
-16407
)、
配列 (
「言って」
-16403
)、
配列 (
「言って」
-16401
)、
配列 (
「おばあちゃん」
-16393
)、
配列 (
「ひとつ」、
-16220
)、
配列 (
「もう」
-16216
)、
配列 (
「はい」、
-16212
)、
配列 (
「3つ」、
-16205
)、
配列 (
「何」、
-16202
)、
配列 (
「ただ」
-16187
)、
配列 (
「法律」、
-16180
)、
配列 (
「そして」、
-16171
)、
配列 (
「すごい」
-16169
)、
配列 (
「いつ」
-16158
)、
配列 (
「り」、
-16155
)、
配列 (
「クレイジー」、
-15959
)、
配列 (
「リアン」
-15958
)、
配列 (
「ギャップ」、
-15944
)、
配列 (
「ライオン」、
-15933
)、
配列 (
「嘘」
-15920
)、
配列 (
「リーン」、
-15915
)、
配列 (
「サイレント」、
-15903
)、
配列 (
「戻る」、
-15889
)、
配列 (
「長い」
-15878
)、
配列 (
「ルー」
-15707
)、
配列 (
「あなた」、
-15701
)、
配列 (
「lv」、
-15681
)、
配列 (
「ルアン」
-15667
)、
配列 (
「散歩」
-15661
)、
配列 (
「月」、
-15659
)、
配列 (
「ルオ」
-15652
)、
配列 (
「お母さん」、
-15640
)、
配列 (
「まい」
-15631
)、
配列 (
「男」
-15625
)、
配列 (
「マン」、
-15454
)、
配列 (
「まお」
-15448
)、
配列 (
「私」、
-15436
)、
配列 (
「めい」
-15435
)、
配列 (
「男性」、
-15419
)、
配列 (
「孟」、
-15416
)、
配列 (
「み」、
-15408
)、
配列 (
「ミアン」
-15394
)、
配列 (
「ミャオ」、
-15385
)、
配列 (
「みえ」、
-15377
)、
配列 (
「分」、
-15375
)、
配列 (
「ミン」、
-15369
)、
配列 (
「ミュウ」
-15363
)、
配列 (
「も」、
-15362
)、
配列 (
「もう」、
-15183
)、
配列 (
「む」
-15180
)、
配列 (
「な」
-15165
)、
配列 (
「ない」
-15158
)、
配列 (
「ナン」、
-15153
)、
配列 (
「ナン」、
-15150
)、
配列 (
「なお」、
-15149
)、
配列 (
「ね」、
-15144
)、
配列 (
「ねえ」
-15143
)、
配列 (
「ねん」、
-15141
)、
配列 (
「ネン」、
-15140
)、
配列 (
「に」、
-15139
)、
配列 (
「ニアン」
-15128
)、
配列 (
「ニャン」
-15121
)、
配列 (
「ニャオ」、
-15119
)、
配列 (
「ねえ」
-15117
)、
配列 (
「にん」
-15110
)、
配列 (
「ニン」、
-15109
)、
配列 (
「にう」
-14941
)、
配列 (
「のん」、
-14937
)、
配列 (
「ぬ」、
-14933
)、
配列 (
「NV」、
-14930
)、
配列 (
「ヌアン」
-14929
)、
配列 (
「鵺」
-14928
)、
配列 (
「ぬお」
-14926
)、
配列 (
「お」、
-14922
)、
配列 (
「おう」
-14921
)、
配列 (
「ぱ」、
-14914
)、
配列 (
「パイ」、
-14908
)、
配列 (
「パン」
-14902
)、
配列 (
「パン」
-14894
)、
配列 (
「パオ」
-14889
)、
配列 (
「ペイ」
-14882
)、
配列 (
「ペン」
-14873
)、
配列 (
「ペン」、
-14871
)、
配列 (
「ぴ」、
-14857
)、
配列 (
「ピアン」、
-14678
)、
配列 (
「ピャオ」、
-14674
)、
配列 (
「パイ」
-14670
)、
配列 (
「ピン」、
-14668
)、
配列 (
「ピン」
-14663
)、
配列 (
「ぽ」、
-14654
)、
配列 (
「ぷ」、
-14645
)、
配列 (
「気」、
-14630
)、
配列 (
「キア」、
-14594
)、
配列 (
「銭」、
-14429
)、
配列 (
「強」、
-14407
)、
配列 (
「チャオ」、
-14399
)、
配列 (
「キエ」、
-14384
)、
配列 (
「秦」
-14379
)、
配列 (
「清」、
-14368
)、
配列 (
「瓊」、
-14355
)、
配列 (
「キウ」、
-14353
)、
配列 (
「く」、
-14345
)、
配列 (
「クァン」、
-14170
)、
配列 (
「クエ」、
-14159
)、
配列 (
「キュン」
-14151
)、
配列 (
「走った」
-14149
)、
配列 (
「鳴った」
-14145
)、
配列 (
「ラオ」
-14140
)、
配列 (
「れ」、
-14137
)、
配列 (
「れん」、
-14135
)、
配列 (
「レン」、
-14125
)、
配列 (
「り」、
-14123
)、
配列 (
「ロン」、
-14122
)、
配列 (
「ルー」
-14112
)、
配列 (
「る」
-14109
)、
配列 (
「ルアン」
-14099
)、
配列 (
「るい」
-14097
)、
配列 (
「走る」
-14094
)、
配列 (
「るお」
-14092
)、
配列 (
「さ」、
-14090
)、
配列 (
「サイ」
-14087
)、
配列 (
「さん」
-14083
)、
配列 (
「歌った」
-13917
)、
配列 (
「保存」、
-13914
)、
配列 (
「もしも」、
-13910
)、
配列 (
「センス」、
-13907
)、
配列 (
「ゴールド」、
-13906
)、
配列 (
「しゃ」
-13905
)、
配列 (
「はい」、
-13896
)、
配列 (
「肉」、
-13894
)、
配列 (
「入る」、
-13878
)、
配列 (
「シャオ」、
-13870
)、
配列 (
「彼女」
-13859
)、
配列 (
「あれ」、
-13847
)、
配列 (
「いいね」、
-13831
)、
配列 (
「彼女」
-13658
)、
配列 (
「しょう」
-13611
)、
配列 (
「ただ」
-13601
)、
配列 (
「はい」、
-13406
)、
配列 (
「シュアイ」
-13404
)、
配列 (
「シュアン」
-13400
)、
配列 (
「シュアン」
-13398
)、
配列 (
「彼女」
-13395
)、
配列 (
「聞いてください」
-13391
)、
配列 (
「シュオ」
-13387
)、
配列 (
「はい」、
-13383
)、
配列 (
「歌」、
-13367
)、
配列 (
「そう」
-13359
)、
配列 (
「名前」、
-13356
)、
配列 (
「スアン」
-13343
)、
配列 (
「骨」
-13340
)、
配列 (
「太陽」、
-13329
)、
配列 (
「すお」
-13326
)、
配列 (
「はい」、
-13318
)、
配列 (
「だから」、
-13147
)、
配列 (
「そして」、
-13138
)、
配列 (
「ただ」
-13120
)、
配列 (
「男」
-13107
)、
配列 (
「お茶」
-13096
)、
配列 (
「そこ」、
-13095
)、
配列 (
「あなた」、
-13091
)、
配列 (
「ティアン」
-13076
)、
配列 (
「おじさん」
-13068
)、
配列 (
「ネクタイ」
-13063
)、
配列 (
「考える」
-13060
)、
配列 (
「も」、
-12888
)、
配列 (
「鳥」
-12875
)、
配列 (
「あなた」、
-12871
)、
配列 (
「先生」
-12860
)、
配列 (
「トゥイ」、
-12858
)、
配列 (
「ツン」、
-12852
)、
配列 (
「佗」、
-12849
)、
配列 (
「わ」、
-12838
)、
配列 (
「ワイ」
-12831
)、
配列 (
「わん」、
-12829
)、
配列 (
「ワン」、
-12812
)、
配列 (
「ウェイ」、
-12802
)、
配列 (
「ウェン」、
-12607
)、
配列 (
「ウェン」、
-12597
)、
配列 (
「を」
-12594
)、
配列 (
「ウー」、
-12585
)、
配列 (
「し」、
-12556
)、
配列 (
「夏」、
-12359
)、
配列 (
「西安」、
-12346
)、
配列 (
「翔」、
-12320
)、
配列 (
「シャオ」
-12300
)、
配列 (
「謝」、
-12120
)、
配列 (
「シン」、
-12099
)、
配列 (
「シン」、
-12089
)、
配列 (
「ション」、
-12074
)、
配列 (
「秀」
-12067
)、
配列 (
「シュー」、
-12058
)、
配列 (
「シュアン」
-12039
)、
配列 (
「シュエ」、
-11867
)、
配列 (
「シュン」
-11861
)、
配列 (
「やあ」、
-11847
)、
配列 (
「やん」
-11831
)、
配列 (
「陽」、
-11798
)、
配列 (
「ヤオ」、
-11781
)、
配列 (
「そうだね」
-11604
)、
配列 (
「いいよ」
-11589
)、
配列 (
「陰」、
-11536
)、
配列 (
「イン」、
-11358
)、
配列 (
「よ」、
-11340
)、
配列 (
「ヨン」、
-11339
)、
配列 (
「あなた」、
-11324
)、
配列 (
「ゆ」、
-11303
)、
配列 (
「元」、
-11097
)、
配列 (
「ユエ」
-11077
)、
配列 (
「ゆん」
-11067
)、
配列 (
「ざ」
-11055
)、
配列 (
「ザイ」
-11052
)、
配列 (
「ザン」
-11045
)、
配列 (
「ザン」、
-11041
)、
配列 (
「ザオ」
-11038
)、
配列 (
「ぜ」
-11024
)、
配列 (
「ぜい」
-11020
)、
配列 (
「禅」、
-11019
)、
配列 (
「ゼン」、
-11018
)、
配列 (
「ザー」、
-11014
)、
配列 (
「ザイ」、
-10838
)、
配列 (
「ザン」
-10832
)、
配列 (
「張」
-10815
)、
配列 (
「趙」、
-10800
)、
配列 (
「ゼ」、
-10790
)、
配列 (
「ジェン」、
-10780
)、
配列 (
「鄭」、
-10764
)、
配列 (
「志」、
-10587
)、
配列 (
「チョン」、
-10544
)、
配列 (
「周」、
-10533
)、
配列 (
「朱」、
-10519
)、
配列 (
「ジュア」
-10331
)、
配列 (
「ジュアイ」、
-10329
)、
配列 (
「ジュアン」、
-10328
)、
配列 (
「荘」、
-10322
)、
配列 (
「ずい」、
-10315
)、
配列 (
「ずん」
-10309
)、
配列 (
「ジュオ」、
-10307
)、
配列 (
「じ」、
-10296
)、
配列 (
「ゾン」、
-10281
)、
配列 (
「ぞう」
-10274
)、
配列 (
「ず」
-10270
)、
配列 (
「ズアン」
-10262
)、
配列 (
「ずい」
-10260
)、
配列 (
「ずん」
-10256
)、
配列 (
「ずお」、
-10254
)
);
if ($num > 0 && $num < 160) {
chr($num) を返す;
}
elseif ($num < -20319 || $num > -10247) {
"" を返します;
} その他 {
for ($i = count($this->d) - 1; $i >= 0; $i--) {
if ($this->d[$i][1]
休憩;
}
return $this->d[$i][0];
}
}
$ret = "";
for ($i = 0; $i
$ret .= $this->g($p);
$ret = substr($ret, 0, 1);
$ret を返します;
}
$ret = "";
for ($i = 0; $i
if ($p > 160) {
$q = ord(substr($str, ++ $i, 1));
$p = $p * 256 + $q -65536;
}
$ret .= $this->g($p);
}
$ret を返します;
}
PHP は UTF-8 でエンコードされた中国語と英語の文字列をインターセプトします
*/
関数 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);
}
中国語と英語の文字列をピンインに変換します
*/
関数 strtopin($chinese,$type=0) {
$i = 0;
$ピンイン = "";
$arr = 配列();
一方 (1) {
$str = $this->utf8_substr($chinese, $i, 1);
if (!empty ($str)) {
$arr[$i] = $str;
$str = iconv("utf-8", "gb2312", $str);
If($type==1){ //頭文字に変換
$ピンイン .= $this->c($str);
}else{ //完全なスペルに変換します
$pinyin .= $this->f($str)." ";
}
$i = $i +1;
他
休憩
}
$ピンインを返します;
}
}
?>
2. PHP グレゴリオ暦と旧暦の変換
グレゴリオ暦を太陰暦に変換するアルゴリズムは、太陰暦、幹と枝の年、黄道帯などが関係し、非常に複雑です。インターネット上には多くのアルゴリズムが提供されており、この記事でまとめた Lunar.class.php は公暦と旧暦を変換する機能を実現できます。使用法:
require_once("Lunar.class.php");
$lunar = 新しいルナ();
$date = $lunar->convertLunarToSolar(2013,8,17) //グレゴリオ暦を太陰暦に変換します
print_r($date);
実行後の出力配列:
コードをコピーします
コードをコピーします
コードは次のとおりです:
コードは次のとおりです:
配列 ( [0] => 2013 [1] => 09 [2] => 21 )
コードは次のとおりです: 関数 ConvertSolarMonthToLunar($year,$month) {
クラスルナ{
var $MIN_YEAR = 1891;
var $MAX_YEAR = 2100;
var $lunarInfo = array(
配列(0,2,9,21936)、配列(6,1,30,9656)、配列(0,2,17,9584)、配列(0,2,6,21168)、配列(5,1, 26,43344)、配列(0,2,13,59728),
配列(0,2,2,27296)、配列(3,1,22,44368)、配列(0,2,10,43856)、配列(8,1,30,19304)、配列(0,2, 19,19168)、配列(0,2,8,42352),
配列(5,1,29,21096)、配列(0,2,16,53856)、配列(0,2,4,55632)、配列(4,1,25,27304)、配列(0,2, 13,22176)、配列(0,2,2,39632),
配列(2,1,22,19176)、配列(0,2,10,19168)、配列(6,1,30,42200)、配列(0,2,18,42192)、配列(0,2, 6,53840)、配列(5,1,26,54568),
配列(0,2,14,46400)、配列(0,2,3,54944)、配列(2,1,23,38608)、配列(0,2,11,38320)、配列(7,2, 1,18872)、配列(0,2,20,18800),
配列(0,2,8,42160)、配列(5,1,28,45656)、配列(0,2,16,27216)、配列(0,2,5,27968)、配列(4,1, 24,44456)、配列(0,2,13,11104),
配列(0,2,2,38256)、配列(2,1,23,18808)、配列(0,2,10,18800)、配列(6,1,30,25776)、配列(0,2, 17,54432)、配列(0,2,6,59984),
配列(5,1,26,27976)、配列(0,2,14,23248)、配列(0,2,4,11104)、配列(3,1,24,37744)、配列(0,2, 11,37600)、配列(7,1,31,51560),
配列(0,2,19,51536)、配列(0,2,8,54432)、配列(6,1,27,55888)、配列(0,2,15,46416)、配列(0,2, 5,22176)、配列(4,1,25,43736),
配列(0,2,13,9680)、配列(0,2,2,37584)、配列(2,1,22,51544)、配列(0,2,10,43344)、配列(7,1, 29,46248)、配列(0,2,17,27808),
配列(0,2,6,46416)、配列(5,1,27,21928)、配列(0,2,14,19872)、配列(0,2,3,42416)、配列(3,1, 24,21176)、配列(0,2,12,21168),
配列(8,1,31,43344)、配列(0,2,18,59728)、配列(0,2,8,27296)、配列(6,1,28,44368)、配列(0,2, 15,43856)、配列(0,2,5,19296),
配列(4,1,25,42352)、配列(0,2,13,42352)、配列(0,2,2,21088)、配列(3,1,21,59696)、配列(0,2, 9,55632)、配列(7,1,30,23208),
配列(0,2,17,22176)、配列(0,2,6,38608)、配列(5,1,27,19176)、配列(0,2,15,19152)、配列(0,2, 3,42192)、配列(4,1,23,53864)、
配列(0,2,11,53840)、配列(8,1,31,54568)、配列(0,2,18,46400)、配列(0,2,7,46752)、配列(6,1, 28,38608)、配列(0,2,16,38320),
配列(0,2,5,18864)、配列(4,1,25,42168)、配列(0,2,13,42160)、配列(10,2,2,45656)、配列(0,2, 20,27216)、配列(0,2,9,27968),
配列(6,1,29,44448)、配列(0,2,17,43872)、配列(0,2,6,38256)、配列(5,1,27,18808)、配列(0,2, 15,18800)、配列(0,2,4,25776)、
配列(3,1,23,27216)、配列(0,2,10,59984)、配列(8,1,31,27432)、配列(0,2,19,23232)、配列(0,2, 7,43872)、配列(5,1,28,37736),
配列(0,2,16,37600)、配列(0,2,5,51552)、配列(4,1,24,54440)、配列(0,2,12,54432)、配列(0,2, 1,55888)、配列(2,1,22,23208),
配列(0,2,9,22176)、配列(7,1,29,43736)、配列(0,2,18,9680)、配列(0,2,7,37584)、配列(5,1, 26,51544)、配列(0,2,14,43344),
配列(0,2,3,46240)、配列(4,1,23,46416)、配列(0,2,10,44368)、配列(9,1,31,21928)、配列(0,2, 19,19360)、配列(0,2,8,42416),
配列(6,1,28,21176)、配列(0,2,16,21168)、配列(0,2,5,43312)、配列(4,1,25,29864)、配列(0,2, 12,27296)、配列(0,2,1,44368),
配列(2,1,22,19880)、配列(0,2,10,19296)、配列(6,1,29,42352)、配列(0,2,17,42208)、配列(0,2, 6,53856)、配列(5,1,26,59696),
配列(0,2,13,54576)、配列(0,2,3,23200)、配列(3,1,23,27472)、配列(0,2,11,38608)、配列(11,1, 31,19176)、配列(0,2,19,19152),
配列(0,2,8,42192)、配列(6,1,28,53848)、配列(0,2,15,53840)、配列(0,2,4,54560)、配列(5,1, 24,55968)、配列(0,2,12,46496),
配列(0,2,1,22224)、配列(2,1,22,19160)、配列(0,2,10,18864)、配列(7,1,30,42168)、配列(0,2, 17,42160)、配列(0,2,6,43600),
配列(5,1,26,46376)、配列(0,2,14,27936)、配列(0,2,2,44448)、配列(3,1,23,21936)、配列(0,2, 11,37744)、配列(8,2,1,18808),
配列(0,2,19,18800)、配列(0,2,8,25776)、配列(6,1,28,27216)、配列(0,2,15,59984)、配列(0,2, 4,27424)、配列(4,1,24,43872),
配列(0,2,12,43744)、配列(0,2,2,37600)、配列(3,1,21,51568)、配列(0,2,9,51552)、配列(7,1, 29,54440)、配列(0,2,17,54432),
配列(0,2,5,55888)、配列(5,1,26,23208)、配列(0,2,14,22176)、配列(0,2,3,42704)、配列(4,1, 23,21224)、配列(0,2,11,21200),
配列(8,1,31,43352)、配列(0,2,19,43344)、配列(0,2,7,46240)、配列(6,1,27,46416)、配列(0,2, 15,44368)、配列(0,2,5,21920),
配列(4,1,24,42448)、配列(0,2,12,42416)、配列(0,2,2,21168)、配列(3,1,22,43320)、配列(0,2, 9,26928)、配列(7,1,29,29336),
配列(0,2,17,27296)、配列(0,2,6,44368)、配列(5,1,26,19880)、配列(0,2,14,19296)、配列(0,2, 3,42352)、配列(4,1,24,21104),
配列(0,2,10,53856)、配列(8,1,30,59696)、配列(0,2,18,54560)、配列(0,2,7,55968)、配列(6,1, 27,27472)、配列(0,2,15,22224),
配列(0,2,5,19168)、配列(4,1,25,42216)、配列(0,2,12,42192)、配列(0,2,1,53584)、配列(2,1, 21,55592)、配列(0,2,9,54560)
);
/**
* 太陽暦を太陰暦に変換します
* @param 年グレゴリオ暦 - 年
* @param month グレゴリオ暦月
* @param 日付グレゴリオ暦 - 日
*/
関数 ConvertSolarToLunar($year,$month,$date){
//デバッガー;
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){
return array(1891,'正月','初一','辛卯',1,1,'兔');
}
return $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2]));
}
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){
return array(1891,'正月','初一','辛卯',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->isLeap Year($year) && $month == 2) $dd++;
$lunar_ary = array();
for ($i = 1; $i
$array = $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2]));
$array[] = $year 。 「-」。 $month 。 「-」。 $i;
$lunar_ary[$i] = $array;
}
$lunar_ary を返す;
}
/**
* 太陰暦を太陽暦に変換します
* @param 旧暦年
* @param month 旧暦 - 月、閏月の処理: たとえば、5 月に閏月がある場合、2 番目の 5 月は 6 月になります。これは、旧暦の 13 か月に相当しますが、日数が異なる場合があります。 13ヶ月目は0
* @param date 旧暦日
*/
関数 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];
配列を返す($年、$月、$日);
}
/**
* 閏年かどうかを判断します
* @param年
*/
関数 isLeapyear($year){
return (($year%4==0 && $year%100 !=0) || ($year%400==0));
}
/**
* 星座を取得しましょう
* @param年
*/
関数 getLunar YearName($year){
$sky = array('庚','辛','壬','癸','甲','乙','丙','丁','戊','己');
$earth = array('申','酉','戌','亥','子','丑','寅','卯','辰','巳','午',' ');
$年 = $年。'';
return $sky[$year{3}].$earth[$year%12];
}
/**
* 旧暦に応じて星座を取得します
* @param 旧暦年
*/
関数 get YearZodiac($year){
$zodiac = array('猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊');
$zodiac[$year%12] を返します;
}
/**
* 太陽暦の月の日数を取得します
* @param 年グレゴリオ暦 - 年
* @param month グレゴリオ暦月
*/
関数 getSolarMonthDays($year,$month){
$monthHash = array('1'=>31,'2'=>$this->isLeap Year($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 旧暦年
* @param month 旧暦の1月から始まる月
*/
function getLunarMonthDays($year,$month){
$monthData = $this->getLunarMonths($year);
$monthData[$month-1]を返します;
}
/**
* 旧暦の各月の日付の配列を取得します
* @param年
*/
関数 getLunarMonths($year){
$yearData = $this->lunarInfo[$year - $this->MIN_YEAR];
$leapMonth = $yearData[0];
$bit = decbin($yearData[3]);
for ($i = 0; $i
}
for($k=0,$klen=16-count($bitArray);$k
array_unshift($bitArray, '0');
}
$bitArray = array_slice($bitArray,0,($leapMonth==0?12:13));
for($i=0; $i
}
$bitArray を返します;
}
/**
* 旧暦の各年の日数を取得します
* @param 旧暦年
*/
関数 getLunaryearDays($year){
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
$monthArray = $this->getLunar YearMonths($year);
$len = count($monthArray);
return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]);
}
関数 getLunar YearMonths($year){
//デバッガー;
$monthData = $this->getLunarMonths($year);
$res=array();
$temp=0;
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR];
$len = ($yearData[0]==0?12:13);
for($i=0;$i
$temp=0;
for($j=0;$j
$temp+=$monthData[$j];
}
array_push($res, $temp);
}
$res を返します;
}
/**
* 閏月を取得します
* @param 旧暦年
*/
機能