// 将每个字符都转换为 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"
土耳其语是一个创建非拉丁语言的好例子。
它同时具有大写 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 转换的包装器。