2016-08-19 59 views
3

我想排序以自然的方式這樣PHP natsort()與重音字母

['České Budějovice', 
'Cidlina', 
'Praha 1', 
'Praha 10', 
'Praha 4'] 

的數組。結果應該是

['Cidlina', 
'České Budějovice', 
'Praha 1', 
'Praha 4', 
'Praha 10'] 

的natsort()函數本身做了偉大的工作,以自然的方式進行排序(即把「布拉格10」後「布拉格4」),但它提出的是與重音符號的字母開頭的單詞結束。

有沒有辦法如何自然排序,同時尊重區域設置?

+0

你可以嘗試使用[sort()](http://www.php.net/manual/en/function.sort.php)與'SORT_LOCALE_STRING'和'SORT_NATURAL'標誌而不是'natsort( )'和適當的語言環境設置('cs_CS') –

+0

不幸的是,Collat​​or無法自然排序,sort()不能與SORT_LOCALE_STRING配合使用http://sandbox.onlinephpfunctions.com/code/7254dbbdea400b4acc404f3bd8d7c345b2e78232 – samuelg0rd0n

回答

2

不能natsort

project page,你會發現這一點:

字符的比較是純數字,沒有考慮字符集或語言環境考慮在內。所以它只對ASCII是正確的。

+1

我想你對了。經過研究,我認爲除了創建自己的比較函數之外,還有一種簡單的方法可以做到這一點。 – samuelg0rd0n