ホームページ  >  記事  >  バックエンド開発  >  PHPで中国語の文字をピンインに変換する方法

PHPで中国語の文字をピンインに変換する方法

PHPz
PHPzオリジナル
2023-04-24 10:51:513381ブラウズ

PHP は非常に人気のあるサーバーサイド スクリプト言語であり、柔軟性、速度、セキュリティの利点があるため、Web 開発、インターネット アプリケーション、エンタープライズ レベルのソフトウェア開発などの分野で広く使用されています。中国語の文字をピンインに変換することは一般的な要件であり、特に中国語の検索、並べ替え、フィルター処理、その他のシナリオでは、ユーザー エクスペリエンスと検索の精度を向上させることができます。この記事では、PHPを使って漢字をピンインに変換する方法を紹介します。

1. PHP 拡張機能を使用する

PHP にはピンインと呼ばれる拡張機能があり、これを使用すると中国語の文字をピンインに簡単に変換できます。まず、php.ini ファイルで拡張機能を有効にし、次の行を見つけてコメントを解除し、PHP サービスを保存して再起動する必要があります。

extension=pinyin.so

その後、PHP で拡張機能によって提供される関数を呼び出すことができます。中国語の文字をピンインに変換するコード。たとえば、文字列「China」をピンインに変換するには、ピンイン関数を使用できます。

$py = pinyin('中国'); // 返回结果为“zhong guo”

ピンイン関数の戻り結果は文字列であり、複数のピンインはスペースで区切られることに注意してください。 。文字列内のすべての中国語文字をピンインに変換する必要がある場合は、PHP の正規表現関数を使用して変換を完了できます。

2. サードパーティのライブラリを使用する

拡張機能を使用するだけでなく、サードパーティのライブラリを使用して中国語の文字をピンインに変換することもできます。より人気のあるライブラリには、ピンイン、overtrue-pinyin などがあります。ここでは、ピンイン ライブラリを例として、それを使用して中国語の文字をピンインに変換する方法を説明します。ピンイン ライブラリは Composer を通じてインストールする必要があります:

composer require overtrue/pinyin

インストール後、PHP コードで次のコードを使用して、中国語の文字をピンインに変換する機能を実現します:

require_once "vendor/autoload.php"; // 引入Composer自动加载器

use Overtrue\Pinyin\Pinyin;

$pinyin = new Pinyin(); // 创建Pinyin实例

$string = '中国'; // 待转换的字符串
$result = $pinyin->convert($string); // 转换
var_dump($result); // 输出转换结果

上記のコード内、最初に Composer オートローダーを導入してから、ピンイン インスタンスを作成する必要があります。 Pinyin クラスが提供する Convert メソッドを使用して文字列を Pinyin に変換し、最終的に結果を出力できます。出力結果は次のとおりです:

Array
(
    [0] => zhong
    [1] => guo
)

ピンイン ライブラリでは、複数の発音の単語を複数のピンインに変換することもサポートされていることに注意してください。たとえば、「重慶」は 2 つのピンイン「chong」と「qing」に変換されます。 , そのため、使用する際には取り扱いが必要です。

3. 自分で変換を実装する

最後に、拡張機能やサードパーティのライブラリを使用したくない場合は、中国語の文字をピンインに変換する機能を自分で実装することもできます。以下に、Unicode エンコードに基づく方法を示します。まず、文字列内の各中国語文字を対応する Unicode エンコード セットに変換する必要があります。次に、各中国語文字に対応するピンインをピンイン テーブルにクエリして見つけ、文字列に結合します。

function split_unicode_chrs($str) { // 将字符串转换成Unicode编码集合
    preg_match_all('/./u', $str, $matches);
    return $matches[0];
}

function get_pinyin($chr) { // 查询拼音表,返回汉字对应的拼音
    $table = array(
        '\u554a' => 'a', // 注意转义
        '\u963f' => 'a',
        // 其他汉字及拼音...
    );
    return isset($table[$chr]) ? $table[$chr] : false;
}

function str2pinyin($str) { // 将汉字字符串转成拼音
    $unicode_chrs = split_unicode_chrs($str);
    $result = array();
    foreach ($unicode_chrs as $chr) {
        $pinyin = get_pinyin(json_encode($chr));
        if ($pinyin) {
            $result[] = $pinyin;
        }
    }
    return implode(' ', $result);
}

$str = '中国';
$pinyin = str2pinyin($str);
echo $pinyin; // 输出“zhong guo”

この実装にはパフォーマンスの問題がある可能性があり、一般的に使用される漢字にのみ適用できることに注意してください。より効率的かつ包括的な中国語文字からピンインへの変換機能を実装したい場合は、ピンイン ライブラリのソース コードまたは他のオープン ソース実装を参照できます。

4. 概要

この記事では、中国語の文字をピンインに変換する 3 つの方法 (PHP 拡張を使用する方法、サードパーティのライブラリを使用する方法、および自分で変換を実装する方法) を紹介しました。各方法には長所と短所があり、実際のニーズに応じて選択できます。どの方法を使用しても、中国語の検索、並べ替え、その他のシナリオのエクスペリエンスと精度が向上し、ユーザーのエクスペリエンスが向上します。

以上がPHPで中国語の文字をピンインに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。