Alat konversi Bahasa Mandarin ke Pinyin berdasarkan kamus data mozillazg/pinyin, solusi yang lebih akurat untuk mengonversi karakter Mandarin ke Pinyin yang mendukung karakter multi-fonetik.
Suka proyek saya? Klik di sini untuk mendukung saya
Instal menggunakan Komposer:
composer require overtrue/pinyin:^5.0
Kecuali metode mendapatkan huruf pertama, semua metode mendukung parameter kedua, yang digunakan untuk menentukan format pinyin. Nilai opsionalnya adalah:
symbol
(default) simbol nada, seperti pīn yīn
none
tidak mengeluarkan pinyin, seperti pin yin
number
, misalnya pin1 yin1
Kecuali permalink
yang mengembalikan string, semua metode lain mengembalikan jenis koleksi OvertruePinyinCollection
:
use Overtrue Pinyin Pinyin ;
$ pinyin = Pinyin:: sentence ( '你好,世界' );
Anda dapat mengakses konten koleksi melalui:
echo $ pinyin ; // nǐ hǎo shì jiè
// 直接将对象转成字符串
$ string = ( string ) $ pinyin ; // nǐ hǎo shì jiè
$ pinyin -> toArray (); // ['nǐ', 'hǎo', 'shì', 'jiè']
// 直接使用索引访问
$ pinyin [ 0 ]; // 'nǐ'
// 使用函数遍历
$ pinyin -> map ( ' ucfirst ' ); // ['Nǐ', 'Hǎo', 'Shì', 'Jiè']
// 拼接为字符串
$ pinyin -> join ( ' ' ); // 'nǐ hǎo shì jiè'
$ pinyin -> join ( ' - ' ); // 'nǐ-hǎo-shì-jiè'
// 转成 json
$ pinyin -> toJson (); // '["nǐ","hǎo","shì","jiè"]'
json_encode ( $ pinyin ); // '["nǐ","hǎo","shì","jiè"]'
use Overtrue Pinyin Pinyin ;
echo Pinyin:: sentence ( '带着希望去旅行,比到达终点更美好' );
// dài zhe xī wàng qù lǚ xíng , bǐ dào dá zhōng diǎn gèng měi hǎo
// 去除声调
echo Pinyin:: sentence ( '带着希望去旅行,比到达终点更美好' , ' none ' );
// dai zhe xi wang qu lv xing , bi dao da zhong dian geng mei hao
// 保留所有非汉字字符
echo Pinyin:: fullSentence ( 'ル是片假名,π是希腊字母' , ' none ' );
// ル shi pian jia ming ,π shi xi la zi mu
Biasanya digunakan untuk link artikel dll, Anda bisa menggunakan metode permalink
untuk mendapatkan string pinyin:
echo Pinyin:: permalink ( '带着希望去旅行' ); // dai-zhe-xi-wang-qu-lyu-xing
echo Pinyin:: permalink ( '带着希望去旅行' , ' . ' ); // dai.zhe.xi.wang.qu.lyu.xing
Biasanya digunakan untuk membuat indeks pencarian, Anda dapat menggunakan metode abbr
untuk mengonversi:
Pinyin:: abbr ( '带着希望去旅行' ); // ['d', 'z', 'x', 'w', 'q', 'l', 'x']
echo Pinyin:: abbr ( '带着希望去旅行' )-> join ( ' - ' ); // d-z-x-w-q-l-x
echo Pinyin:: abbr ( '你好2018! ' )-> join ( '' ); // nh2018
echo Pinyin:: abbr ( ' Happy New Year! 2018! ' )-> join ( '' ); // HNY2018
// 保留原字符串的英文单词
echo Pinyin:: abbr ( ' CGV电影院' , false , true )-> join ( '' ); // CGVdyy
inisial
Ubah huruf pertama menjadi nama keluarga dan sisanya menjadi kata biasa:
Pinyin:: nameAbbr ( '欧阳' ); // ['o', 'y']
echo Pinyin:: nameAbbr ( '单单单' )-> join ( ' - ' ); // s-d-d
Pengucapan nama belakang suatu nama agak berbeda dengan karakter biasa. Misalnya, pengucapan umum 'dan' adalah dan
, tetapi bila digunakan sebagai nama keluarga, diucapkan shan
.
Pinyin:: name ( '单某某' ); // ['shàn', 'mǒu', 'mǒu']
Pinyin:: name ( '单某某' , ' none ' ); // ['shan', 'mou', 'mou']
Pinyin:: name ( '单某某' , ' none ' )-> join ( ' - ' ); // shan-mou-mou
Menurut peraturan nasional mengenai pengingat bahwa pinyin ü (Lu, Lu, Lu, Lu, Nv, dll.) dari nama pada dokumen perjalanan paspor Tiongkok dieja secara seragam sebagai YU, ubah ü
menjadi yu
:
Pinyin:: passportName ( '吕小布' ); // ['lyu', 'xiao', 'bu']
Pinyin:: passportName ( '女小花' ); // ['nyu', 'xiao', 'hua']
Pinyin:: passportName ( '律师' ); // ['lyu', 'shi']
Nilai kembalian karakter polifonetik adalah kumpulan array asosiatif. Secara default, semua pengucapan setelah deduplikasi dikembalikan:
$ pinyin = Pinyin:: polyphones ( '重庆' );
$ pinyin [ '重' ]; // ["zhòng", "chóng", "tóng"]
$ pinyin [ '庆' ]; // ["qìng"]
$ pinyin -> toArray ();
// [
// "重": ["zhòng", "chóng", "tóng"],
// "庆": ["qìng"]
// ]
Jika Anda tidak ingin menghapus duplikat, Anda dapat mengembalikannya dalam bentuk array:
$ pinyin = Pinyin:: polyphones ( '重庆重庆' , Converter:: TONE_STYLE_SYMBOL , true );
// or
$ pinyin = Pinyin:: polyphonesAsArray ( '重庆重庆' , Converter:: TONE_STYLE_SYMBOL );
$ pinyin -> toArray ();
// [
// ["重" => ["zhòng", "chóng", "tóng"]],
// ["庆" => ["qìng"]],
// ["重" => ["zhòng", "chóng", "tóng"]],
// ["庆" => ["qìng"]]
// ]
Mirip dengan karakter polifonik, nilai kembalian dari satu karakter adalah string. Karakter polifonik akan disesuaikan dengan frekuensi karakter untuk mendapatkan suara yang umum:
$ pinyin = Pinyin:: chars ( '重庆' );
echo $ pinyin [ '重' ]; // "zhòng"
echo $ pinyin [ '庆' ]; // "qìng"
$ pinyin -> toArray ();
// [
// "重": "zhòng",
// "庆": "qìng"
// ]
Peringatan
Saat memproses kata tunggal, karena kata polifonik memperoleh bunyi umum dari tabel frekuensi kata, situasi yang salah mungkin terjadi di lingkungan kata.
Silakan lihat kasus uji untuk penggunaan lebih lanjut.
Menurut peraturan Komite Kerja Bahasa dan Karakter Nasional, lv
, lyu
, dan lǚ
semuanya benar, tetapi lv
adalah yang paling umum digunakan, jadi lv
digunakan secara default. Jika Anda perlu menggunakan yang lain, Anda dapat meneruskannya di selama inisialisasi:
echo Pinyin:: sentence ( '旅行' );
// lǚ xíng
echo Pinyin:: sentence ( '旅行' , ' none ' );
// lv xing
echo Pinyin:: yuToYu ()-> sentence ( '旅行' , ' none ' );
// lyu xing
echo Pinyin:: yuToU ()-> sentence ( '旅行' , ' none ' );
// lu xing
echo Pinyin:: yuToV ()-> sentence ( '旅行' , ' none ' );
// lv xing
Peringatan
Hanya valid bila gaya Pinyin adalah mode non-
none
.
Anda dapat menggunakan baris perintah untuk mengonversi Pinyin:
php ./bin/pinyin 带着希望去旅行 --method=sentence --tone-style=symbol
# dài zhe xī wàng qù lǚ xíng
Untuk metode penggunaan lainnya, Anda dapat melihat dokumentasi bantuan:
php ./bin/pinyin --help
# Usage:
# ./pinyin [chinese] [method] [options]
# Options:
# -j, --json 输出 JSON 格式.
# -c, --compact 不格式化输出 JSON.
# -m, --method=[method] 转换方式,可选:sentence/sentenceFull/permalink/abbr/nameAbbr/name/passportName/phrase/polyphones/chars.
# --no-tone 不使用音调.
# --tone-style=[style] 音调风格,可选值:symbol/none/number, default: none.
# -h, --help 显示帮助.
Paket independen ada di sini: overtrue/laravel-pinyin
Jika Anda memiliki kebutuhan ini, Anda juga dapat mempelajari paket saya yang lain: overtrue/php-opencc
Selamat memberikan komentar dan meningkatkan kosa kata:
Jika Anda menyukai proyek saya dan ingin mendukungnya, klik di sini
Terima kasih banyak kepada Jetbrains karena telah berbaik hati memberikan lisensi kepada saya untuk mengerjakan proyek ini dan proyek sumber terbuka lainnya.
Ingin tahu bagaimana cara membuat paket ekstensi PHP dari awal?
Harap perhatikan kursus praktis saya, di mana saya akan berbagi beberapa pengalaman pengembangan ekstensi - "Tutorial Praktis Paket Ekstensi PHP - Dari Memulai hingga Rilis"
MIT