2012-01-24 9 views
3

В принципе, у меня есть куча файлов с общим префиксом (logo%d.jpg).Список файлов в цифровом порядке вместо алфавитного?

Когда они просматриваются с использованием ls или даже при переходе через каталог в PHP, я не получаю их в численном порядке, то есть logo1.jpg, logo2.jpg.

Вместо этого я получаю их в алфавитном порядке, как:

logo1.jpg, logo10.jpg, logo11.jpg ... logo 19.jpg, logo2.jpg (вместо logo20.jpg)

Есть ли способ Ouput их в порядке? logo1, logo2, logo3 .. etc.

+0

Это будет работать только тогда, когда вы используете 01 вместо 1 и 02 вместо 2 и так далее. В общем, выше будет порядок. – Oldskool

+0

Oldskool, нет, 01 все равно сделает это в алфавитном порядке. Я попробовал это. Но Хакре получил правильную идею. – volk

ответ

8

Вы можете поместить их в массив и отсортировать массив с помощью функции natsort­Docs:

$array = array('logo1','logo2','logo12'); 
natsort($array); 

Который дает (Demo):

array(3) { 
    [0]=> 
    string(5) "logo1" 
    [1]=> 
    string(5) "logo2" 
    [2]=> 
    string(6) "logo12" 
} 

заказ вы ищете часто называют естественный порядок.

В качестве альтернативы вы можете префикс чисел, например. если вы уже используете sprintf назвать файлы, так что стандартный порядок сортировки будет работать:

`logo%03d.jpg` 

Какой бы генерировать

logo001.jpg 

для десятичного 1.

+0

wow ... Я знал об этом ... –

1

Если вы используете ls, как вы говорите ...

ls | sort -n 

будет делать трюк.

+0

Да, я просто понял это, как за 3 минуты до того, как вы разместили его. но теперь проблема делает это в PHP. Я предполагаю, что exec? – volk

Смежные вопросы