Un outil de conversion du chinois vers le pinyin basé sur le dictionnaire de données mozillazg/pinyin, une solution plus précise pour convertir les caractères chinois en pinyin qui prend en charge les caractères multi-phonétiques.
Vous aimez mon projet ? Cliquez ici pour me soutenir
Installer à l'aide de Composer :
composer require overtrue/pinyin:^5.0
À l'exception de la méthode d'obtention de la première lettre, toutes les méthodes prennent en charge un deuxième paramètre, qui est utilisé pour spécifier le format pinyin. Les valeurs facultatives sont :
symbol
(par défaut) symbole de tonalité, tel que pīn yīn
none
ne produit pas de pinyin, comme pin yin
number
, tel que pin1 yin1
À l'exception du permalink
qui renvoie une chaîne, toutes les autres méthodes renvoient le type de collection OvertruePinyinCollection
:
use Overtrue Pinyin Pinyin ;
$ pinyin = Pinyin:: sentence ( '你好,世界' );
Vous pouvez accéder au contenu de la collection via :
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
Habituellement utilisée pour les liens d'articles, etc., vous pouvez utiliser la méthode permalink
pour obtenir la chaîne pinyin :
echo Pinyin:: permalink ( '带着希望去旅行' ); // dai-zhe-xi-wang-qu-lyu-xing
echo Pinyin:: permalink ( '带着希望去旅行' , ' . ' ); // dai.zhe.xi.wang.qu.lyu.xing
Habituellement utilisée pour créer des index de recherche, vous pouvez utiliser la méthode abbr
pour convertir :
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
initiales
Convertissez la première lettre en nom de famille et le reste en mots normaux :
Pinyin:: nameAbbr ( '欧阳' ); // ['o', 'y']
echo Pinyin:: nameAbbr ( '单单单' )-> join ( ' - ' ); // s-d-d
La prononciation du nom de famille d'un nom est quelque peu différente de celle des caractères ordinaires. Par exemple, la prononciation courante de « dan » est dan
, mais lorsqu'il est utilisé comme nom de famille, il se prononce shan
.
Pinyin:: name ( '单某某' ); // ['shàn', 'mǒu', 'mǒu']
Pinyin:: name ( '单某某' , ' none ' ); // ['shan', 'mou', 'mou']
Pinyin:: name ( '单某某' , ' none ' )-> join ( ' - ' ); // shan-mou-mou
Selon la réglementation nationale concernant le rappel que le pinyin ü (Lu, Lu, Lu, Lu, Nv, etc.) du nom sur le document de voyage passeport chinois s'écrit uniformément YU, convertissez ü
en yu
:
Pinyin:: passportName ( '吕小布' ); // ['lyu', 'xiao', 'bu']
Pinyin:: passportName ( '女小花' ); // ['nyu', 'xiao', 'hua']
Pinyin:: passportName ( '律师' ); // ['lyu', 'shi']
La valeur de retour des caractères polyphonétiques est une collection de tableaux associatifs. Par défaut, toutes les prononciations après déduplication sont renvoyées :
$ pinyin = Pinyin:: polyphones ( '重庆' );
$ pinyin [ '重' ]; // ["zhòng", "chóng", "tóng"]
$ pinyin [ '庆' ]; // ["qìng"]
$ pinyin -> toArray ();
// [
// "重": ["zhòng", "chóng", "tóng"],
// "庆": ["qìng"]
// ]
Si vous ne souhaitez pas supprimer les doublons, vous pouvez le renvoyer sous forme de tableau :
$ 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"]]
// ]
Semblable aux caractères polyphoniques, la valeur de retour d'un seul caractère est une chaîne. Les caractères polyphoniques seront ajustés en fonction de la fréquence du caractère pour obtenir des sons communs :
$ pinyin = Pinyin:: chars ( '重庆' );
echo $ pinyin [ '重' ]; // "zhòng"
echo $ pinyin [ '庆' ]; // "qìng"
$ pinyin -> toArray ();
// [
// "重": "zhòng",
// "庆": "qìng"
// ]
Avertissement
Lors du traitement de mots simples, étant donné que les mots polyphoniques obtiennent des sons communs à partir du tableau de fréquence des mots, des situations incorrectes peuvent se produire dans les environnements de mots. Il est recommandé d'utiliser le traitement de texte polyphonique.
Veuillez vous référer aux cas de test pour plus d'utilisation.
Selon les règlements du Comité national de travail sur la langue et les caractères, lv
, lyu
et lǚ
sont tous corrects, mais lv
est le plus couramment utilisé, donc lv
est utilisé par défaut. Si vous devez en utiliser d'autres, vous pouvez les transmettre. lors de l'initialisation :
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
Avertissement
Valable uniquement lorsque le style Pinyin est en mode non-
none
.
Vous pouvez utiliser la ligne de commande pour convertir le Pinyin :
php ./bin/pinyin 带着希望去旅行 --method=sentence --tone-style=symbol
# dài zhe xī wàng qù lǚ xíng
Pour plus de méthodes d'utilisation, vous pouvez consulter la documentation d'aide :
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 显示帮助.
Le package indépendant est ici : overtrue/laravel-pinyin
Si vous avez ce besoin, vous pouvez également vous renseigner sur mon autre package : overtrue/php-opencc
Bienvenue pour fournir des commentaires et améliorer le vocabulaire :
Si vous aimez mon projet et souhaitez le soutenir, cliquez ici
Un grand merci à Jetbrains pour m'avoir aimablement fourni une licence pour travailler sur ce projet et sur d'autres projets open source.
Vous vous demandez comment créer un package d’extension PHP à partir de zéro ?
Veuillez prêter attention à mon cours pratique, dans lequel je partagerai une expérience de développement d'extensions - "Tutoriel pratique du pack d'extensions PHP - Du démarrage à la sortie"
MIT