ホームページ バックエンド開発 PHPチュートリアル PHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアル

PHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアル

Jul 13, 2016 am 10:29 AM
ウェブ開発 エンタープライズセキュリティ 情報技術 セキュリティソフト データベース モバイル開発 システムセキュリティ ウェブサイトのセキュリティ サイバーセキュリティ ネットワーク技術 ソフトウェア開発

方法 1: ASCII コード変換によれば、GB2312 ライブラリは多声文字については何もできません。

GB2312規格には、中国の元首相朱鎔基が書いた「镕」など、変換できない漢字が合計6763文字含まれています。

GB2312 では、収集された漢字が「分割」され、各ゾーンには 94 個の漢字/記号が含まれます。この表現は位置コードとも呼ばれます。
エリア 01 ~ 09 は特殊なシンボルです。
領域 16 ~ 55 は、ピンインでソートされた第 1 レベルの漢字です。 (3755)
56 ~ 87 の領域は、部首/画数ごとに分類された第 2 レベルの漢字です。 (3008)
エリア 10 ~ 15 および 88 ~ 94 はコード化されていません。
占有されるコード ビットは 72*94=6768 です。このうち空席はD7FA~D7FEの5名です。つまり、漢字は合計 6763 個あります。そのうち、第 1 水準漢字は 3755 字、第 2 水準漢字は 3008 字あります。このタイプのアルゴリズムでは、実際に変換できるのは 3755 文字の漢字のみです。


利点: 大規模なテキスト ライブラリは使用されず、ファイルは比較的小さく、正規表現は使用されず、パフォーマンスは比較的高くなります。頭文字変換をサポートします。
欠点: GB2312 に含まれていない漢字は変換できず、複数の発音文字は認識できません。
(ピンイン変換にそれほど高い要件がない場合は、これを使用することをお勧めします。)

[php] plaincopy を表示PHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアルPHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアル
  • // このタイプは ASCII コードに基づいて変換され、GB2312 ライブラリはポリフォニック文字を処理できません。
  • // GB2312 規格には、中国の元首相朱鎔基が書いた「镕」など、範囲外の漢字が合計 6763 文字含まれています。  
  • クラスピンイン{
  • パブリック 静的 関数 utf8_to($s, $isfirst = false) {
  • return self::to(self::utf8_to_gb2312($s), $isfirst);  
  • }
  • パブリック 静的 関数 utf8_to_gb2312($s) {
  • return iconv('UTF-8', 'GB2312//IGNORE', $s);  
  • }  
  • // 字符串必须はGB2312编码
  • public static function to($s, $isfirst = false) {
  • $res = '';  
  • $len = strlen($s);  
  • $pinyin_arr = self::get_pinyin_array();  
  • for($i=0; $i
  • $ascii = ord($s{$i});  
  • if($ascii > 0x80) {
  • $ascii2 = ord($s{++$i});  
  • $ascii = $ascii * 256 + $ascii2 - 65536;  
  • }  
  • if($ascii 0) {
  • if(($ascii >= 48 && $ascii = 97 && $ascii
  • $res .= $s{$i}; // 0-9 a-z
  • elseif($ascii >= 65 && $ascii
  • $res .= strto lower($s{$i}); // A-Z
  • }その他{
  • $res .= '_';  
  • }
  • }elseif($ascii -10247) {
  • $res .= '_';  
  • }その他{
  • foreach($pinyin_arr as $py=>$asc) {
  • if($asc
  • $res .= $isfirst ? $py{0} : $py;  
  • 休憩;  
  • }
  • }
  • }
  • }
  • $res を返す;  
  • }  
  • パブリック 静的 関数 to_first($s) {
  • $ascii = ord($s{0});  
  • if($ascii > 0xE0) {
  • $s = self::utf8_to_gb2312($s{0}.$s{1}.$s{2});  
  • }elseif($ascii
  • if($ascii >= 65 && $ascii
  • return strto lower($s{0});  
  • }elseif($ascii >= 97 && $ascii
  • $s{0} を返します。  
  • }その他{
  • false を返します。  
  • }
  • }
  • if(strlen($s)
  • false を返します。  
  • }
  • $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;  
  • if($asc>=-20319 && $asc
  • if($asc>=-20283 && $asc
  • if($asc>=-19775 && $asc
  • if($asc>=-19218 && $asc
  • if($asc>=-18710 && $asc
  • if($asc>=-18526 && $asc
  • if($asc>=-18239 && $asc
  • if($asc>=-17922 && $asc
  • if($asc>=-17417 && $asc
  • if($asc>=-16474 && $asc
  • if($asc>=-16212 && $asc
  • if($asc>=-15640 && $asc
  • if($asc>=-15165 && $asc
  • if($asc>=-14922 && $asc
  • if($asc>=-14914 && $asc
  • if($asc>=-14630 && $asc
  • if($asc>=-14149 && $asc
  • if($asc>=-14090 && $asc
  • if($asc>=-13318 && $asc
  • if($asc>=-12838 && $asc
  • if($asc>=-12556 && $asc
  • if($asc>=-11847 && $asc
  • if($asc>=-11055 && $asc
  • false を返します。  
  • }
  • パブリック静的関数 get_pinyin_array() {
  • 静的$py_arr;
  • if(isset($py_arr)) return $py_arr;
  • $k = 'a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai |can|cang|cao|ce|ceng|cha|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong |クー|クー|キュアン|キュイ|クン|クオ|ダ|ダイ|ダン|ダン|ダオ|デ|デン|ディ|ディアン|ディアオ|ダイ|ディン|ディウ|ドン|ドゥ|ドゥ|ドゥアン|ドゥイ|ドゥン|duo|e|en|er|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|gei|gen|geng|gong|gou|gu |gua|guai|guan|guang|gui|gun|guo|ha|hai|han|hang|hao|he|hei|hen|hen|hong|hou|hu|hua|huai|huan|huang|hui|hun |huo|ji|jia|jian|jiang|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong| Kou |ク|クア|クアイ|クアン|クアン|クイ|クン|クオ|ラ|ライ|ラン|ラン|ラオ|ル|レイ|レン|リ|リア|リャン|リャオ|嘘|リン|リン|リウ|long|lou|lu|lv|luan|lue|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo |mou|mu|na|nai|nan|nang|nao|ne|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo |o|ou|pa|pai|pan|pang|pao|pei|pen|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin |qing|qiong|qiu|qu|quan|que|qun|ran|rang|rao|re|ren|ren|ren|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang |サオ|セ|セン|セン|シャ|シャイ|シャン|シャン|シャオ|シェ|シェン|シェン|シ|ショウ|シュア|シュア|シュアイ|シュアン|シュアン|シュイ|シュン|シュオ|シ|ソン|ソウ|su|suan|sui|sun|suo|ta|tai|tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa |ワイ|ワン|ワン|ウェイ|ウェン|ウェン|ウォ|呉|西|夏|西安|翔|シャオ|謝|新|興|雄|秀|徐|玄|シュエ|シュン|ヤ|ヤン|ヤン|ヤオ|イェ|イー|イン|イン|ヨ|ヨン|あなた|ユ|ユアン|ユエ|ユン|ザ|ザイ|ザン|ザン|ザオ|ゼ|ゼイ|ゼン|ゼン|ザ|ザ|ザイ|ザン|チャン|zhao|zhe|zhen|zheng|zhi|zhong|zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo
  • $v = '-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-2000 2| -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|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155| -15959|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-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|-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';  
  • $key = explode('|', $k);  
  • $val = explode('|', $v);  
  • $py_arr = array_combine($key, $val);  
  • arsort($py_arr);  
  • 戻る
  • }
  • }
  • /*
  • var_dump(0xE0);
  • for($i=0; $i var_dump("$i :".chr($i));
  • }
  • */
  • var_dump(pinyin::utf8_to('PHP の中国語文字をピンインに'));
  • var_dump(pinyin::utf8_to('GB2312 標準には、合計 6763 個の漢字が含まれています。中国の元首相、朱鎔基の「镕」など、範囲外の漢字は変換できません。')); var_dump(pinyin::utf8_to(''1234567890-=QWERTYUIOP[]ASDFGHJKL;ZXCVBNM,./abcdefghijklmnopqrstuvwxyz'));
  • var_dump(pinyin::utf8_to('PHP 中国語文字からピンイン型へ', 1));
  • var_dump(pinyin::utf8_to('GB2312 標準には合計 6763 文字の漢字が含まれています。範囲内にない漢字は変換できません。たとえば、中国の元首相、朱鎔基の「镕」という単語。', 1 ));
  • var_dump(pinyin::utf8_to(''1234567890-=QWERTYUIOP[]ASDFGHJKL;ZXCVBNM,./abcdefghijklmnopqrstuvwxyz', 1));
  • var_dump(pinyin::to_first('PHP の中国語文字をピンイン型に変換'));
  • var_dump(pinyin::to_first('GB2312 標準には合計 6763 個の漢字が含まれています。範囲内にない漢字は変換できません。たとえば、中国の元首相、朱鎔基の「镕」という単語。') );
  • var_dump(ピンイン::to_first('▂`1234567890-=QWERTYUIOP[]ASDFGHJKL;ZXCVBNM,./abcdefghijklmnopqrstuvwxyz'));
  • ?>

  • 方法 2: ピンインの組み合わせ配列に基づいて検索する

    [php] plaincopy を表示PHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアルPHPで漢字をピンインに変換する2つの方法 + PHPで漢字を抽出する方法(中国語)_PHPチュートリアル
  • クラスピンイン{
  • プライベート $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),
  • このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

    Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

    PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

    MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

    PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

    PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

    他の Web 開発言語と比較した C++ の長所と短所は何ですか? 他の Web 開発言語と比較した C++ の長所と短所は何ですか? Jun 03, 2024 pm 12:11 PM

    Web 開発における C++ の利点には、速度、パフォーマンス、低レベル アクセスが含まれますが、一方で、急峻な学習曲線やメモリ管理要件などの制限もあります。 Web 開発言語を選択する場合、開発者はアプリケーションのニーズに基づいて C++ の利点と制限を考慮する必要があります。

    Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Jun 03, 2024 pm 02:20 PM

    Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。

    GolangでJSONデータをデータベースに保存するにはどうすればよいですか? GolangでJSONデータをデータベースに保存するにはどうすればよいですか? Jun 06, 2024 am 11:24 AM

    JSON データは、gjson ライブラリまたは json.Unmarshal 関数を使用して MySQL データベースに保存できます。 gjson ライブラリは、JSON フィールドを解析するための便利なメソッドを提供します。json.Unmarshal 関数には、JSON データをアンマーシャリングするためのターゲット型ポインターが必要です。どちらの方法でも、SQL ステートメントを準備し、データをデータベースに永続化するために挿入操作を実行する必要があります。

    モバイルアプリ開発における C++ の可能性: 人材とリソース モバイルアプリ開発における C++ の可能性: 人材とリソース Jun 03, 2024 pm 03:11 PM

    C++ は、大規模な開発者コミュニティと豊富な学習リソース、優れたパフォーマンスをもたらす、一度作成すれば Android、iOS、Windows で実行できる WORA モデルなどの理由から、モバイル開発において大きな可能性を秘めています。ゲームエンジンの開発に広く使用されており、低レイテンシーとリソース管理機能により、高パフォーマンスのゲーム要件を満たします。

    PHP データベース接続の落とし穴: よくある間違いや誤解を避ける PHP データベース接続の落とし穴: よくある間違いや誤解を避ける Jun 05, 2024 pm 10:21 PM

    PHP データベース接続エラーを回避するには、接続エラーを確認し、変数名を資格情報と照合するというベスト プラクティスに従ってください。安全なストレージまたは環境変数を使用して、資格情報のハードコーディングを回避します。 SQL インジェクションを防止し、準備されたステートメントまたはバインドされたパラメーターを使用するために、使用後に接続を閉じます。

    See all articles