ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルに実装された中国語のピンイン変換、グレゴリオ暦と旧暦の変換クラスと使用例

PHP_PHP チュートリアルに実装された中国語のピンイン変換、グレゴリオ暦と旧暦の変換クラスと使用例

WBOY
リリース: 2016-07-13 10:26:30
オリジナル
1020 人が閲覧しました

この記事では、PHP 漢字ピンイン変換と西暦と旧暦の変換のための 2 つの機能ファイルをまとめました。これらは非常に実用的です。たとえば、アドレス帳を検索する場合、連絡先の名前のピンインのイニシャルで検索したり、イニシャルで大量のデータをナビゲートしたり、ピンインを変換して Web サイトを最適化したりできます。公共の旧暦変換は、通常、旧暦の祭りのリマインダーなどを容易にするためのカレンダー スケジュール プロジェクトで使用されます。

1. PHP で中国語の文字をピンインに変換します

Pinyin.class.php ファイルは、ほとんどの中国語の文字を中国語のピンインに変換できます。もちろん、すべての中国語の文字をピンインに変換したい場合は、中国語の文字ライブラリを使用する必要がある場合があります。これを実現するには、このタイプのファイルを使用します。基本的にプロジェクトのニーズを満たすことができます。使用法:

コードをコピーします コードは次のとおりです:

require_once("ピンイン.クラス.php"); $ピンイン = 新しいピンイン(); $str = '一生懸命勉強して、毎日進歩してください'; エコー $pinyin->strtopin($str); 実行後の出力: hao hao xue xi tian xiang shang。
漢字の最初の文字だけを出力したい場合は、次を使用します:


コードをコピーします

コードは次のとおりです:
echo $pinyin->strtopin($str,1); 実行後の出力: hhxxttxs。
Pinyin.class.php ソースコード:


コードをコピーします

コードは次のとおりです:


クラスピンイン{
 プライベート $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
  )
 );

関数 g($num) {
  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];
  }
 }

関数 c($str) {
  $ret = "";
  for ($i = 0; $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);
  $ret を返します;
 }

関数 f($str) {
$ret = "";
for ($i = 0; $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 を返します;
}

/*
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] => 7 月 [2] => 11 月 [3] => グイシ [4] => 7 [5] => 11 [7] => 0) 太陰暦をグレゴリオ暦に変換したい場合は、次を使用します:


コードをコピーします

コードは次のとおりです:
$date = $lunar->convertLunarToSolar(2013,8,17); //太陰暦をグレゴリオ暦に変換します print_r($date); 実行後の出力配列:
コードをコピーします

コードは次のとおりです:


配列 ( [0] => 2013 [1] => 09 [2] => 21 )
Lunar.class.php ソースコード:

コードをコピーします

コードは次のとおりです:


クラスルナ{
   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]));
    }

関数 ConvertSolarMonthToLunar($year,$month) {
        $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             $bitArray[$i] = substr($bit, $i, 1);
        }
        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[$i] = $bitArray[$i] + 29;
        }
        $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 旧暦年
​​*/
    機能

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート