所以我有一个包含域名的数组
Array () {
[0] => Array () {
[id]=>int
[name]=>string
[something]=>string/int...
}
[38] => Array () {
}
}我需要在一个表中显示域名,我从mysql表中获得按名称ASC排序的域名,循环遍历数组,然后转换$ domain ' name‘,以显示不同于xn--sfasdf-dfg.com的IDN,而是人类可读的。但是这个域名在W和Y之间,因为他们以X开头,我想要的是按照他们的unicode名称някво-име.com (它从N开始)对它们进行排序。这个域名应该在M和O之间,而不是W和Y之间。有人知道怎么做吗?我在谷歌上搜索过,但似乎没有人写过这样的问题。我尝试了usort和uasort php函数,但顺序完全错误。
谢谢,Yani Krystev
发布于 2018-02-10 12:24:58
排序(或术语排序)是一件复杂的事情,在一种语言中已经存在,但如果你混合语言就更复杂了。没有与域名字符串相关联的上下文,您不知道它是哪种语言,您只有一个带有字符的字符串(即使在所有只使用ASCII的语言之间,排序顺序也不相同)。
因此,您首先需要对此进行整理,并定义您希望使用哪种语言进行操作。然后你有工具来进行整理,但它们不是基本的工具。
例如,在libc中,LC_COLLATE变量将影响所有为国际化而正确编程的工具,并因此将其考虑在内。
libicu是另一个处理这类事情的大型库,请参阅https://www-01.ibm.com/software/globalization/icu/
PHP有一个intl扩展,它是一个包装器。请具体查看http://php.net/manual/en/class.collator.php上的Collator类:
提供字符串比较功能,并支持适当的区分地区的排序顺序。
发布于 2013-10-20 18:43:24
някво-име.com不以"N“开头,它以西里尔字母"AN”开头,听起来像英语"N“。如果你想根据字母的发音进行排序,你会遇到一段艰难的时期。如果你想按字母排序,它是一个不同的字母表,应该在Z之后或A之前。
我会将所有域名解码为unicode,再将英语域名转换为unicode,然后使用任何用于unicode排序的常规内置函数对unicode列表进行排序。
https://stackoverflow.com/questions/19451160
复制相似问题