// 将每个字符都转写为 ASCII
$string = 'Москва́';
$string = Transliterator::create('Any-Latin; Latin-ASCII')->transliterate($string);
print $string;
// 结果为 "Moskva"
(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)
Transliterator::create -- transliterator_create — 创建转写器
面向对象风格
$id
, int $direction
= Transliterator::FORWARD): ?Transliterator过程式风格
通过 ID 打开一个转写器。
此函数目前没有文档;仅提供其参数列表。
id
ID。可以使用 Transliterator::listIDs() 获取所有已注册的转写器 ID 列表。
direction
方向,默认为 Transliterator::FORWARD。也可以设置为 Transliterator::REVERSE。
成功时返回一个 Transliterator 对象,失败时返回 null
。
// 将每个字符都转写为 ASCII
$string = 'Москва́';
$string = Transliterator::create('Any-Latin; Latin-ASCII')->transliterate($string);
print $string;
// 结果为 "Moskva"
一个针对非拉丁语语言的 create 的好例子是土耳其语。
它同时包含大写字母 I 和小写字母 ı,这使得其他 strtolower 之类的函数毫无用处。
$text = "Iğdır";
echo Transliterator::create("tr-Lower")->transliterate($text);
将返回正确的结果 ığdır,而不是 iğdır 。
如果您想深入了解正在发生的事情,请阅读 ICU 项目的文档:http://userguide.icu-project.org/transforms/general
此 API 调用基本上只是围绕 ICU 转写的包装器。