我正在尝试按字母顺序对 UTF-8 字符串进行排序。结果包含未知字符,我不知道为什么。同样的事情也发生在 usort 和 sort 上。
setlocale(LC_COLLATE, 'ro_RO.UTF-8');
$word = 'ÎABAȚÂIEȘĂ';
$chars = str_split($word);
echo 'Word: ' . $word . "'n";
//sort($chars, SORT_LOCALE_STRING);
usort($chars, function($a, $b){
echo 'Comparing: ' . $a . ' and ' . $b . "'n";
return strcoll($a, $b);
});
echo 'Result: ' . implode($chars) . "'n";
命令行示例:http://s18.postimg.org/avqfhetsp/test.gif
问题不是由比较和/或排序引起的,而是由str_split()
函数引起的。由于此函数的多字节版本不存在,因此应改用 mb_split()
或 preg_split()
来实现此目的。