You need to sort text in a way that respects a particular locale’s rules for character ordering.
Instantiate a Collator object for your locale, and then call its sort() method:
1 2 3 4 |
$words = array('Малина', 'Клубника', 'Огурец'); $collator = new Collator('ru_RU'); // Sorts in-place, just like sort() $collator->sort($words); |
PHP’s normal text-handling routines just treat strings as sequences of bytes. They know nothing about multibyte characters, let alone each locale’s rules about which characters go “before” which other ones in that locale’s equivalent of alphabetical order.
The Collator class, however, uses ICU’s big database of locale-specific information to do this properly.
The Collator’s sort() method corresponds to the PHP sort() function. Collator also has an asort() method which, just like PHP’s asort() function, maintains index/value association in the sorted array.