क्या प्राकृतिक ऑर्डर एल्गोरिदम का उपयोग करके PHP में यूनिकोड/यूटीएफ -8 वर्णों के साथ सरणी को सॉर्ट करना संभव है? उदाहरण के लिए (इस सरणी में आदेश सही ढंग से आदेश दिया जाता है):यूनिकोड के समर्थन के साथ PHP में प्राकृतिक सॉर्टिंग एल्गोरिदम?
$array = array
(
0 => 'Agile',
1 => 'Ágile',
2 => 'Àgile',
3 => 'Âgile',
4 => 'Ägile',
5 => 'Ãgile',
6 => 'Test',
);
अगर मैं asort ($ सरणी) मैं निम्नलिखित परिणाम प्राप्त के साथ प्रयास करें:
Array
(
[0] => Agile
[6] => Test
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
)
और का उपयोग कर natsort ($ सरणी):
Array
(
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
[0] => Agile
[6] => Test
)
कैसे मैं एक समारोह है कि सही परिणाम आदेश देता है लागू कर सकते हैं (0, 1, 2, 3, 4, 5, 6) PHP 5 के तहत? सभी मल्टी बाइट स्ट्रिंग फ़ंक्शंस (mbstring, iconv, ...) मेरे सिस्टम पर उपलब्ध हैं।
संपादित करें: मैं मानों को नट्सोर्ट() करना चाहता हूं, चाबियाँ नहीं - एकमात्र कारण है कि मैं स्पष्ट रूप से कुंजी (और सॉर्ट() के बजाय एएसओआर() का उपयोग कर रहा हूं) खोजने का काम आसान करना है बाहर जहां यूनिकोड मानों का क्रमबद्ध गलत हो गया।
लगता है कि आपको वास्तव में यहां क्या चाहिए, यूनिकोड कोलेशन एल्गोरिदम (यूसीए) है। मेरे पास एक पर्ल प्रदर्शन है [इस जवाब में] (http://stackoverflow.com/questions/1097908/how-do-i-sort-unicode-strings-alphabetically-in-python/5024116#5024116), जहां मैं उन लोगों के लिए एक शेल-कॉल करने योग्य संस्करण प्रदान करें जिनके पास कॉल करने के लिए उचित लाइब्रेरी नहीं हो सकती है। शायद यह भी यहां मदद कर सकता है। – tchrist
@ क्रिसमस: यूसीए जो मैं ढूंढ रहा हूं, मैं थोड़ा सा जवाब दूंगा, सिर के लिए धन्यवाद! ;) –