Инструмент преобразования китайского языка в пиньинь, основанный на словаре данных mozillazg/pinyin, более точное решение для преобразования китайских символов в пиньинь, поддерживающее многофонетические символы.
Нравится мой проект? Нажмите здесь, чтобы поддержать меня
Установить с помощью Composer:
composer require overtrue/pinyin:^5.0
За исключением метода получения первой буквы, все методы поддерживают второй параметр, который используется для указания формата пиньинь. Необязательные значения:
symbol
(по умолчанию) символ тона, например, pīn yīn
none
не выводит пиньинь, например pin yin
number
, например pin1 yin1
За исключением permalink
, которая возвращает строку, все остальные методы возвращают тип коллекции OvertruePinyinCollection
:
use Overtrue Pinyin Pinyin ;
$ pinyin = Pinyin:: sentence ( '你好,世界' );
Вы можете получить доступ к содержимому коллекции через:
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
Обычно используется для ссылок на статьи и т. д., вы можете использовать метод permalink
для получения строки пиньинь:
echo Pinyin:: permalink ( '带着希望去旅行' ); // dai-zhe-xi-wang-qu-lyu-xing
echo Pinyin:: permalink ( '带着希望去旅行' , ' . ' ); // dai.zhe.xi.wang.qu.lyu.xing
Обычно используется для создания индексов для поиска. Для преобразования можно использовать метод abbr
:
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
инициалы
Преобразуйте первую букву в фамилию, а остальные в обычные слова:
Pinyin:: nameAbbr ( '欧阳' ); // ['o', 'y']
echo Pinyin:: nameAbbr ( '单单单' )-> join ( ' - ' ); // s-d-d
Произношение фамилии имени несколько отличается от произношения обычных персонажей. Например, распространенное произношение «дан» — dan
, но при использовании в качестве фамилии оно произносится как shan
.
Pinyin:: name ( '单某某' ); // ['shàn', 'mǒu', 'mǒu']
Pinyin:: name ( '单某某' , ' none ' ); // ['shan', 'mou', 'mou']
Pinyin:: name ( '单某某' , ' none ' )-> join ( ' - ' ); // shan-mou-mou
В соответствии с национальными правилами, касающимися напоминания о том, что пиньинь ü (Лу, Лу, Лу, Лу, Нв и т. д.) имени в проездном документе китайского паспорта одинаково пишется как Ю, преобразуйте ü
в yu
:
Pinyin:: passportName ( '吕小布' ); // ['lyu', 'xiao', 'bu']
Pinyin:: passportName ( '女小花' ); // ['nyu', 'xiao', 'hua']
Pinyin:: passportName ( '律师' ); // ['lyu', 'shi']
Возвращаемое значение полифонетических символов представляет собой набор ассоциативных массивов. По умолчанию возвращаются все произношения после дедупликации:
$ pinyin = Pinyin:: polyphones ( '重庆' );
$ pinyin [ '重' ]; // ["zhòng", "chóng", "tóng"]
$ pinyin [ '庆' ]; // ["qìng"]
$ pinyin -> toArray ();
// [
// "重": ["zhòng", "chóng", "tóng"],
// "庆": ["qìng"]
// ]
Если вы не хотите удалять дубликаты, вы можете вернуть их в виде массива:
$ 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"]]
// ]
Подобно полифоническим символам, возвращаемое значение одного символа представляет собой строку. Полифонические символы будут корректироваться в соответствии с частотой символа для получения общих звуков:
$ pinyin = Pinyin:: chars ( '重庆' );
echo $ pinyin [ '重' ]; // "zhòng"
echo $ pinyin [ '庆' ]; // "qìng"
$ pinyin -> toArray ();
// [
// "重": "zhòng",
// "庆": "qìng"
// ]
Предупреждение
При обработке отдельных слов, поскольку полифонические слова получают общие звуки из таблицы частот слов, в текстовых средах могут возникать некорректные ситуации. Рекомендуется использовать полифоническую обработку слов.
Пожалуйста, обратитесь к тестовым примерам для большего использования.
В соответствии с правилами Рабочего комитета по национальному языку и символам, lv
, lyu
и lǚ
являются правильными, но lv
используется чаще всего, поэтому lv
используется по умолчанию. Если вам нужно использовать другие, вы можете передать их. во время инициализации:
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
Предупреждение
Действует только в том случае, если стиль Пиньинь не является режимом «
none
.
Вы можете использовать командную строку для преобразования пиньинь:
php ./bin/pinyin 带着希望去旅行 --method=sentence --tone-style=symbol
# dài zhe xī wàng qù lǚ xíng
Дополнительные методы использования вы можете просмотреть в справочной документации:
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 显示帮助.
Независимый пакет находится здесь: overtrue/laravel-pinyin.
Если у вас есть такая необходимость, вы также можете узнать о другом моем пакете: overtrue/php-opencc.
Добро пожаловать, чтобы оставить комментарии и улучшить словарный запас:
Если вам понравился мой проект и вы хотите его поддержать, нажмите здесь
Большое спасибо Jetbrains за любезное предоставление мне лицензии на работу над этим и другими проектами с открытым исходным кодом.
Хотите знать, как создать пакет расширений PHP с нуля?
Пожалуйста, обратите внимание на мой практический курс, где я поделюсь опытом разработки расширений - "Практическое руководство PHP Extension Pack - From Getting Started to Release"
Массачусетский технологический институт