Intereting Posts
Ошибка Mydomain в модуле Magento Наличие цикла PHP-скрипта навсегда выполняющего задания на работу из очереди Как проверить транзакции Android в приложении для биллинга на моем сервере? Общие роли CMS и уровни доступа Как распечатать список с использованием иерархической структуры данных? Рекурсивный путь к каталогу PHP php: объявлять аргументы типа функции 3-уровневый массив в php для организации данных Как получить путь к файлу в html <input type = "file"> в PHP? Laravel 4.1 Запуск миграции и настройка конфигурации из зависимостей пакетов Удалите пустые элементы массива с помощью array_filter с функцией обратного вызова Могу ли я просмотреть XML, который PHP SOAP хочет отправить перед отправкой? Отображение «требуется» только в одном флажке (динамический дисплей) Ошибки PHP на cronjob, отлично работает при подсказке PHP: короткий идентификатор, подобный Youtube, с солью

Сортировка по группам Regex в PHP

У меня есть массив имен файлов этой формы:

«A – 1.2 – План этажа.PDF»

Мне нужно сначала отсортировать массив по категориям в начале, в следующем порядке:

1. Category: A 2. Category: ESC 3. Category: C 4. Category: M 5. Category: E 6. Category: P 

Затем мне нужно отсортировать массив по номерам, следующим за категорией.

Вот пример массива, который нужно отсортировать:

 $arr[0] = "A - 1.0 - Title Page.PDF"; $arr[1] = "A - 2.2 - Enlarged Floor Plans"; $arr[2] = "A - 2.1.0 - Structural Details.PDF"; $arr[3] = "E - 1.0 - Electrical Title Page.PDF"; $arr[4] = "A - 1.2 - Floor Plan.PDF"; $arr[5] = "P - 1.0 - Plumbing Title Page.PDF"; $arr[6] = "A - 2.1.1 - Structural Details.PDF"; $arr[7] = "C - 1.0 - Civil Title Page.PDF"; $arr[8] = "M - 1.0 - Mechanical Title Page.PDF"; $arr[9] = "ESC - 1.0 - Erosion Control Plan.PDF"; 

В идеале этот массив затем

 $arr[0] = "A - 1.0 - Title Page.PDF"; $arr[1] = "A - 1.2 - Floor Plan.PDF"; $arr[2] = "A - 2.1.0 - Structural Details.PDF"; $arr[3] = "A - 2.1.1 - Structural Details.PDF"; $arr[4] = "A - 2.2 - Enlarged Floor Plans"; $arr[5] = "ESC - 1.0 - Erosion Control Plan.PDF"; $arr[6] = "C - 1.0 - Civil Title Page.PDF"; $arr[7] = "M - 1.0 - Mechanical Title Page.PDF"; $arr[8] = "E - 1.0 - Electrical Title Page.PDF"; $arr[9] = "P - 1.0 - Plumbing Title Page.PDF"; 

У меня есть следующее регулярное выражение для правильной группировки имен файлов:

 ^([AZ]+?) ?- ?([0-9]+)\.([0-9]+)(\.([0-9]+))?.*$ 

Я хочу, чтобы массив отсортировался по группе 1, затем по группе 2, затем по группе 3. Если существует группа 5, то сортируйте последнюю по группе 5. Игнорируйте группу 4.

Может быть проще отсортировать категории лексикографически. Если так, то все будет хорошо; хотя было бы предпочтительнее, если бы они были отсортированы в порядке, указанном выше.

Есть ли способ сделать это с помощью PHP?