PHP: Сортировка строк в UTF-кодировке

в 11:57, , рубрики: php, Программирование

Недавно в своем проекте столкнулся с необходимость сортировать строки в UTF-кодировке в PHP.

Как известно дефолтные функции сортировки в PHP работают в однобайтовой кодировке, и строки в UTF сортируются совсем не так, как хотелось бы, ибо, как известно, в кодировке UTF в обозначении некоторых символов участвует более 1 байта.

Пришлось, как обычно в таких ситуациях, погуглить в поисках братьев по разуму, которые тоже сталкивались с подобными задачами. Решение нашлось довольно быстро.

В поиске хабра упоминания о подобной проблеме мне найти не удалось, поэтому спешу поделиться найденным решением с хабражителями, т.к. такие вещи нужно однозначно складывать в копилку.

Решение выглядит весьма лаконично:

setlocale(LC_COLLATE, 'ru_RU.utf8');


uasort($array, 'strcoll');

uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей, причем вторым параметром принимает имя коллбек функции, посредством которой как раз таки и осуществляется сортировка — http://php.net/manual/ru/function.uasort.php

strcoll — Сравнение строк с учетом текущей локали — php.net/manual/ru/function.strcoll.php

А как Вы сортируете UTF-строки в Ваших PHP-проектах?

Автор: iCoderXXI

Поделиться

* - обязательные к заполнению поля