Можно ли отсортировать массив PHP с настройкой локали?
Это настройка:
Я делаю интерактивный отсортированный список в PHP. С помощью пользовательского ввода можно указать одну из нескольких категорий (столбцов) для прямой сортировки (имя, место жительства и т. Д.). Это я разработал с помощью array_multisort()
функция.
Следующее препятствие. Список составлен на шведском языке, и пользователь будет ожидать шведский алфавитный порядок: abcdefghijklmnopqrstuvxyzåäö. Прямо сейчас переводчик сортирует слова как не алфавитные и ставит их перед «а». Как исправить?
Я нашел немного разбросанной информации на setlocale(LC_COLLATE, "sv_SV")
функция, но отзывы не были восторженными, и мне не удалось понять, как его можно использовать с array_multisort()
, Может это? и если да, то как? Есть ли другой путь в php?
Дело в том, что должен быть какой-то способ — на шведских веб-сайтах много того, где применяется шведский порядок сортировки. Можно ли это сделать с помощью php?
использование SORT_LOCALE_STRING
в качестве третьего параметра array_multisort()
функция. PHP ducuments говорят:
SORT_LOCALE_STRING — сравнивать элементы как строки, основываясь на текущей локали. Он использует локаль, которая может быть изменена с помощью setlocale ()
пример:
$result=array_multisort( $input_array, SORT_ASC, SORT_LOCALE_STRING);
Сожалею. Это была не проблема, я думал, что это было. Текст, написанный в моем коде, сортируется как-то правильно (только то, что ä неправильно сортируется до å, но это кажется ошибкой в спецификациях (?)).
Во всяком случае, проблема, очевидно, с кодировкой символов. Проблема возникает, когда текст извлекается из базы данных контактной формы 7 (плагин WordPress). Предположительно он имеет другую кодировку и нуждается в преобразовании.
Спасибо, в любом случае.