Китайский Утилита (ChineseUtil)
PHP китайский инструментарий, поддерживает преобразование китайских иероглифов в пиньинь, сегментацию пиньинь, взаимное преобразование упрощённых и традиционных иероглифов, преобразование чисел, преобразование денежных сумм.
Из-за обширности китайского языка у иероглифов может быть несколько вариантов произношения, как у упрощённых иероглифов, так и у традиционных. Кроме того, все результаты, возвращаемые этой библиотекой, представляют собой массив, содержащий все комбинации.
В словаре библиотеки ChineseUtil содержится 73925 китайских иероглифа, включая: 3955 упрощённых иероглифа, 1761 традиционный иероглиф и 68209 других китайских иероглифов.
Режимы
Режим производительности (Memory)
Общий режим (SQLite)
Совместимый режим (JSON)
FFI режим (FFI)
Swoole FFI режим (SwooleFFI)
По умолчанию используется общий режим, если среда не поддерживает PDO, будет использоваться совместимый режим.
Можно установить режим работы до выполнения любой инициализации или преобразования.
// Установить режим производительности
Chinese::setMode('Memory');
// Установить общий режим
Chinese::setMode('SQLite');
// Установить совместимый режим
Chinese::setMode('JSON');
// Установить FFI режим
Chinese::setMode('FFI');
// Установить Swoole FFI режим
Chinese::setMode('SwooleFFI');
Независимо от режима, данные, необходимые для сегментации пиньинь, всегда загружаются из данных JSON.
Параметры FFI (обычно используются для собственной компиляции):
use Yurun\Util\Chinese\FFIDriver;
FFIDriver::$library = '.so файл пути';
FFIDriver::$characterDataPath = 'путь к файлу данных символов';
FFIDriver::$pinyinDataPath = 'путь к файлу данных пиньинь';
Использование
Установка через Composer
composer require yurunsoft/chinese-util
Настройка проекта с помощью Composer
"require": {
"yurunsoft/chinese-util" : "~2.0"
}
Функции
use \Yurun\Util\Chinese;
use \Yurun\Util\Chinese\Pinyin;
$string = '恭喜发财!123';
echo $string, PHP_EOL;
echo 'Полный пиньинь:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN));
echo 'Начальный пиньинь:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_FIRST));
echo 'Произношение:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_SOUND));
echo 'Числовое произношение:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER));
echo 'Собственный формат возврата + текстовый формат возврата + пользовательский разделитель:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN | Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER, ' '));
echo 'Все результаты:', PHP_EOL;
var_dump(Chinese::toPinyin($string));
echo 'Без разделения без пиньинь символов:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN, ' ', false));
use \Yurun\Util\Chinese;
$string2 = 'xianggang';
echo '"', $string2, '"Результаты сегментации:', PHP_EOL;
var_dump(Chinese::splitPinyin($string2));
Вывод:
"xianggang"Результаты сегментации:
array(2) {
[0]=>
string(11) "xiang gang"
[1]=>
string(12) "xi ang gang"
}
Результат — массив:
use \Yurun\Util\Chinese;
$string2 = 'xianggang';
echo '"', $string2, '"Результаты сегментации:', PHP_EOL;
var_dump(Chinese::splitPinyinArray($string2));
Вывод:
"xianggang"Результаты сегментации:
array(2) {
[0]=>
array(2) {
[0]=>
string(5) "xiang"
[1]=>
string(4) "gang"
}
[1]=>
array(3) {
[0]=>
string(2) "xi"
[1]=>
string(3) "ang"
[2]=>
string(4) "gang"
}
}
use \Yurun\Util\Chinese;
$string3 = 'Китайская Народная Республика! Поздравляю с богатством!';
echo '"', $string3, '"Упрощённый перевод:', PHP_EOL;
var_dump(Chinese::toSimplified($string3));
echo '"', $string3, '"Традиционный перевод:', PHP_EOL;
var_dump(Chinese::toTraditional($string3));
Вывод:
"Китайская Народная Республика! Поздравляю с богатством!"Упрощённый перевод:
array(1) {
[0]=>
string(39) "中华人民共和国!恭喜发财!"
}
"Китайская Народная Республика! Поздравляю с богатством!"Традиционный перевод:
array(1) {
[0]=>
string(39) "中華人民共和國!恭喜發財!"
}
use Yurun\Util\Chinese\Number;
function test($number)
{
$chinese = Number::toChinese($number, [
'tenMin' => true, // “一十二” => “十二”
]);
$afterNumber = Number::toNumber($chinese);
echo $number, '=>', $chinese, '=>', $afterNumber, '=>', 0 === bccomp($number, $afterNumber, 20) ? 'true' : 'false', PHP_EOL;
}
test(1.234);
test(-1234567890.666);
test(pi());
Вывод:
1.234=>一点二三四=>1.234=>true
-1234567890.666=>负十二亿三千四百五十六万七千八百九十点六六六=>-1234567890.666=>true
3.1415926535898=>三点一四一五九二六五三五八九八=>3.1415926535898=>true
use
``` ```
function test($number)
{
$chinese = Money::toChinese($number, [
'tenMin' => true, // “一十二” => “十二”
]);
$afterMoney = Money::toNumber($chinese);
echo $number, '=>', $chinese, '=>', $afterMoney, '=>', 0 === bccomp($number, $afterMoney) ? 'true' : 'false', PHP_EOL;
}
test(1.234);
test(-1234567890.666);
Вывод:
1.234 => и эр сань фэнь сы ли => 1.234 => true -1234567890.666 => фу и эр сань цянь сы бай у шань лу вань ци чжан ба цзю шань юань лан фэнь лан вэнь => -1234567890.666 => true
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.