在 PHP 中规范化 unicode 字符串

问题描述 投票:0回答:1

在 PHP 中,

mb_strtolower('İspanyolca');

退货

U+0069  i  LATIN SMALL LETTER I
U+0307  ̇   COMBINING DOT ABOVE
U+0073  s  LATIN SMALL LETTER S
U+0070  p  LATIN SMALL LETTER P
etc.

我需要去掉“U+0307 ̇ COMBINING DOT ABOVE”;

我试过这个:

$TheUrl=mb_strtolower('İspanyolca');
$TheUrl=normalizer_normalize($TheUrl,Normalizer::FORM_C);

上面的组合点仍然存在。

如有任何帮助,我们将不胜感激。

php unicode normalize
1个回答
0
投票

您可以尝试 PHP 中的自定义函数来执行 Unicode 规范化,然后删除不属于基本拉丁字母的字符。 例如 -

function removeDiacritics($str) {
    $normalizedStr = Normalizer::normalize($str, Normalizer::FORM_C);
    
    $cleanStr = preg_replace('/[^a-zA-Z]/', '', $normalizedStr);
    return $cleanStr;
}

$TheUrl = mb_strtolower('İspanyolca');
$TheUrl = removeDiacritics($TheUrl);
echo $TheUrl;
© www.soinside.com 2019 - 2024. All rights reserved.