gpt4 book ai didi

php - 如何从 PHP 中的 UTF8 字符获取 "remove diacritics"?

转载 作者:行者123 更新时间:2023-12-01 11:17:34 26 4
gpt4 key购买 nike

我需要复制 MySQL utf8_general_ci 的行为PHP 中的整理。严格来说,我需要检测哪些是不同的,哪些是相同的。独立于案例的部分很容易。问题是utf_general_ci认为带有变音符号的字符和没有变音符号的字符是相等的:e = è = é 等。要复制这种比较,我需要有一种方法来替换 è -> e, é -> e。

我想到的方法是:

echo iconv("utf-8", "ascii//TRANSLIT", "é");

一个问题是 iconv根据当前的语言环境,行为会有所不同,这会导致问题。

另一个问题是输入还可能包含不应被剥离或导致 PHP 通知的西里尔字母。
echo iconv("utf-8", "ascii//TRANSLIT", "дом");

有没有解决方案,或者我是否必须手动将每个带有变音符号的字符映射到没有它的字符?

最佳答案

国际Transliterator将让您定义更深入的音译规则。有关音译规则的完整文档可以在 icu-project.org 上找到。 .

$tests = [ "é", "дом" ];

$tl = Transliterator::create('Latin-ASCII;');
foreach($tests as $str) {
var_dump(
$tl->transliterate($str)
);
}

输出:
string(1) "e"
string(6) "дом"

关于php - 如何从 PHP 中的 UTF8 字符获取 "remove diacritics"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48588705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com