Una herramienta de conversión de chino a pinyin basada en el diccionario mozillazg/pinyin-data, una solución más precisa para convertir caracteres chinos a pinyin que admite caracteres multifonéticos.
¿Te gusta mi proyecto? Haz clic aquí para apoyarme
Instalar usando Composer:
composer require overtrue/pinyin:^5.0
Excepto el método para obtener la primera letra, todos los métodos admiten un segundo parámetro, que se utiliza para especificar el formato pinyin. Los valores opcionales son:
symbol
(predeterminado) símbolo de tono, como pīn yīn
none
no genera pinyin, como pin yin
number
, como pin1 yin1
Excepto permalink
que devuelve una cadena, todos los demás métodos devuelven el tipo de colección OvertruePinyinCollection
:
use Overtrue Pinyin Pinyin ;
$ pinyin = Pinyin:: sentence ( '你好,世界' );
Puede acceder al contenido de la colección a través de:
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
Generalmente se usa para enlaces de artículos, etc., puede usar el método permalink
para obtener la cadena pinyin:
echo Pinyin:: permalink ( '带着希望去旅行' ); // dai-zhe-xi-wang-qu-lyu-xing
echo Pinyin:: permalink ( '带着希望去旅行' , ' . ' ); // dai.zhe.xi.wang.qu.lyu.xing
Generalmente se usa para crear índices para búsqueda, puede usar el método abbr
para 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
iniciales
Convierte la primera letra como apellido y el resto como palabras normales:
Pinyin:: nameAbbr ( '欧阳' ); // ['o', 'y']
echo Pinyin:: nameAbbr ( '单单单' )-> join ( ' - ' ); // s-d-d
La pronunciación del apellido de un nombre es algo diferente a la de los caracteres ordinarios. Por ejemplo, la pronunciación común de 'dan' es dan
, pero cuando se usa como apellido, se pronuncia shan
.
Pinyin:: name ( '单某某' ); // ['shàn', 'mǒu', 'mǒu']
Pinyin:: name ( '单某某' , ' none ' ); // ['shan', 'mou', 'mou']
Pinyin:: name ( '单某某' , ' none ' )-> join ( ' - ' ); // shan-mou-mou
De acuerdo con las regulaciones nacionales con respecto al recordatorio de que el pinyin ü (Lu, Lu, Lu, Lu, Nv, etc.) del nombre en el documento de viaje del pasaporte chino se escribe uniformemente como YU, convierta ü
a yu
:
Pinyin:: passportName ( '吕小布' ); // ['lyu', 'xiao', 'bu']
Pinyin:: passportName ( '女小花' ); // ['nyu', 'xiao', 'hua']
Pinyin:: passportName ( '律师' ); // ['lyu', 'shi']
El valor de retorno de caracteres polifonéticos es una colección de matrices asociativas. De forma predeterminada, se devuelven todas las pronunciaciones después de la deduplicación:
$ pinyin = Pinyin:: polyphones ( '重庆' );
$ pinyin [ '重' ]; // ["zhòng", "chóng", "tóng"]
$ pinyin [ '庆' ]; // ["qìng"]
$ pinyin -> toArray ();
// [
// "重": ["zhòng", "chóng", "tóng"],
// "庆": ["qìng"]
// ]
Si no desea eliminar duplicados, puede devolverlo en forma de matriz:
$ 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"]]
// ]
De manera similar a los caracteres polifónicos, el valor de retorno de un solo carácter es una cadena. Los caracteres polifónicos se ajustarán según la frecuencia del carácter para obtener sonidos comunes:
$ pinyin = Pinyin:: chars ( '重庆' );
echo $ pinyin [ '重' ]; // "zhòng"
echo $ pinyin [ '庆' ]; // "qìng"
$ pinyin -> toArray ();
// [
// "重": "zhòng",
// "庆": "qìng"
// ]
Advertencia
Al procesar palabras individuales, debido a que las palabras polifónicas obtienen sonidos comunes de la tabla de frecuencia de palabras, pueden ocurrir situaciones incorrectas en entornos de palabras. Se recomienda utilizar el procesamiento de textos polifónicos.
Consulte los casos de prueba para obtener más uso.
De acuerdo con las regulaciones del Comité Nacional de Trabajo de Idiomas y Carácter, lv
, lyu
y lǚ
son todos correctos, pero lv
es el más utilizado, por lo que lv
se utiliza de forma predeterminada. Si necesita utilizar otros, puede aprobarlos. durante la inicialización:
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
Advertencia
Solo es válido cuando el estilo Pinyin no es modo
none
.
Puedes usar la línea de comando para convertir Pinyin:
php ./bin/pinyin 带着希望去旅行 --method=sentence --tone-style=symbol
# dài zhe xī wàng qù lǚ xíng
Para conocer más métodos de uso, puede ver la documentación de ayuda:
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 显示帮助.
El paquete independiente está aquí: overtrue/laravel-pinyin
Si tienes esta necesidad, también puedes conocer mi otro paquete: overtrue/php-opencc
Bienvenido a proporcionar comentarios y mejorar el vocabulario:
Si te gusta mi proyecto y quieres apoyarlo, haz clic aquí
Muchas gracias a Jetbrains por proporcionarme amablemente una licencia para trabajar en este y otros proyectos de código abierto.
¿Se pregunta cómo crear un paquete de extensión PHP desde cero?
Preste atención a mi curso práctico, donde compartiré alguna experiencia en el desarrollo de extensiones: "Tutorial práctico del paquete de extensiones PHP: desde el inicio hasta el lanzamiento".
MIT