jimmdigriz / php-translit
PHP 库,用于将文本从一种脚本转换为另一种脚本。
dev-master
2017-09-08 10:37 UTC
Requires
- php: >=5.2.0
This package is auto-updated.
Last update: 2024-09-04 10:43:00 UTC
README
translit 是一个 PHP 库,用于将文本从一种脚本转换为另一种脚本。目前它假定将西里尔文、格鲁吉亚文、亚美尼亚文和希腊文脚本转换为拉丁(罗马)文。西里尔文有针对俄罗斯语、乌克兰语、白俄罗斯语、保加利亚语和哈萨克语的子组,具有自定义规则。
主要类 Translit 可以用作单例或对象本身。内置的转写表可以通过以下语言代码进行引用
- ru - 俄罗斯西里尔文字符,
- uk - 乌克兰西里尔文字符,
- mk - 马其顿西里尔文字符,
- be - 白俄罗斯西里尔文字符(转换为带变音符号的拉丁文),
- bg - 保加利亚西里尔文字符(转换为带变音符号的拉丁文),
- kk - 哈萨克西里尔文字符(转换为带变音符号的拉丁文),
- ka - 格鲁吉亚字符,
- hy - 亚美尼亚字符(转换为带变音符号的拉丁文),
- el - 希腊字符(转换为带变音符号的拉丁文),
- cyrillic - 根据 ISO 9:1995 的所有西里尔文字符,
- latin - 仅带变音符号的拉丁文字符,
- ascii - 仅 ASCII 字符,所有非 ASCII 字符都将替换为问号。
语言代码可以通过逗号组合来处理更多情况,例如
echo Translit::object()->convert('Беларусь', 'be') . ' vs ' .
Translit::object()->convert('Беларусь', 'be,latin');
生成输出
Bielaruś vs Bielarus
默认情况下,忽略错误的语言代码。但可以通过使用严格模式来更改此行为。对于以感叹号开头的前缀语言代码,如果出现任何错误(没有转换表、格式错误、空),将触发异常。例如
// following code returns 'Привет' as is because handler ru_ru not defined
echo Translit::object()->convert('Привет', 'ru_ru') . PHP_EOL;
// but next code fires Exception, because strict mode have used
echo Translit::object()->convert('Привет', '!ru_ru') . PHP_EOL;
这些表有许多来源,可以使用 - ISO 和 BGN/PCGN 标准、许多本地标准以及人们使用的非正式标准。对于这个库,我假设以下顺序的来源 - 本地、ISO、BGN/PCGN、非正式。
所有转写表都是从 Wikipedia 上找到的信息创建的。这些页面的链接已发布在每个文件的标题中。如果发现任何错误或您有新的转写表要添加,请通知我。