dnsoftware / transliterate
laravel 8 的转写包
dev-master
2021-05-03 12:25 UTC
Requires
- php: >=7.2
- ext-intl: *
- illuminate/support: ~8
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.8
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^4.4
- phpunit/phpunit: ^8.0
This package is not auto-updated.
Last update: 2024-10-01 04:59:32 UTC
README
一个小型的转写包,可以将西里尔字母转换为拉丁字母,并支持创建自定义的转写映射表。
预置映射表
- 俄语
- 默认
- GB 7.79 2000
- 乌克兰语
- 国家
系统要求
- laravel >= 5.6
- ext-intl
安装
> composer require dnsoftware/transliterate
如果您不使用 Package Discovery,需要注册 Service Provider
,将其添加到配置文件 app.php
中的 providers
数组。
Dnsoftware\Transliterate\ServiceProvider::class,
如果您想使用别名,将其添加到配置文件 app.php
中的 facades
数组。
建议使用 Transliterate
作为别名,以避免与 Intl 扩展的 Transliterator 类冲突。
'Transliterate' => Dnsoftware\Transliterate\Facade::class,
配置
将配置文件 transliterate.php
复制到 configs
目录,请执行以下操作:
> php artisan vendor:publish --provider="Dnsoftware\Transliterate\ServiceProvider"
使用
您可以使用 facade 进行字符串转写。
use Transliterate; Transliterate::make('Двадцать тысяч льё под водой'); // "Dvadcat tisyach lyo pod vodoy"
可以通过第二个参数传递替代的转写映射表。
use Dnsoftware\Transliterate\Transliterator; $transliterator = new Transliterator(Map::LANG_RU, Map::GOST_7_79_2000); $transliterator->make('Двадцать тысяч льё под водой'); // "Dvadcat` ty'syach l`yo pod vodoj"
生成 URL
slugify
方法生成 URL,删除字符串中的所有标点符号并将空格替换为 "-"。
Transliterate::slugify('Съешь еще этих мягких французских булок, да выпей чаю!'); // sesh-eshhe-etih-myagkih-francuzskih-bulok-da-vipey-chayu
创建转写映射表
每个映射表代表一个关联数组,其中包含要替换的符号作为键,以及它们将被替换成的值。
映射表以返回数组的单独文件形式创建。
// /resources/maps/uk/ukraine.php return [ 'ї' => 'i', 'і' => 'i', 'є' => 'ie', ];
将创建的映射表的路径添加到配置文件 transliterate.php
中的 maps
数组。
'uk' => [ 'ukraine' => dirname(__DIR__) . '/resources/maps/uk/ukraine.php', ]
之后就可以使用映射表了。
$transliterator = new Transliterator('uk', 'ukraine'); $transliterator->make('Ваша транслітерація');
创建转换器
转换器是将在转写结果上自动应用的功能。如果您需要每次对转写字符串执行相同的操作,这非常有用。转换器在 transformers
数组中进行注册。
例如,可以自动删除末尾的空格。
Dnsoftware\Transliterate\Transformer::register(\Closure::fromCallable('trim')),
或者将字符串转换为小写。
Dnsoftware\Transliterate\Transformer::register(\Closure::fromCallable('trim')), Dnsoftware\Transliterate\Transformer::register(\Closure::fromCallable('strtolower')),
请注意,转换器在每次调用
Transliterator::make
时都会应用。