0

ディレクトリ内のファイルを見つけるためにglob() php 関数を使用しています。結果として次の配列を取得しています。

Array
(
[0] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-0.jpeg
[1] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-1.jpeg
[2] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-10.jpeg
[3] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-11.jpeg
[4] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-2.jpeg
[5] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-3.jpeg
[6] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-4.jpeg
[7] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-5.jpeg
[8] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-6.jpeg
[9] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-7.jpeg
[10] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-8.jpeg
[11] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-9.jpeg
)

私が欲しいのは、「ファイル名の部分的なテキストに基づいてファイルをソートする」ことです。上記の配列のように、結果が not としてソートされることを期待していたことに気付いたかもしれ...-0.jpeg, ...-1.jpeg, ...-2.jpegません...-0.jpeg, ...-1.jpeg, ...-10.jpeg

次の結果を期待しています。

Array
(
[0] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-0.jpeg
[1] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-1.jpeg
[2] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-2.jpeg
[3] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-3.jpeg
[4] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-4.jpeg
[5] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-6.jpeg
[7] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-7.jpeg
[8] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-8.jpeg
[9] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-9.jpeg
[10] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-10.jpeg
[11] => D:\xampp\htdocs\myproject\app\webroot\batch\temp\file_2012-08-09-11.jpeg
)

親切に助けてください、正規表現を使用して/使用せずにPHPを使用するにはどうすればよいですか?

4

2 に答える 2

4

「自然順序」アルゴリズムを使用して配列をソートnatsortする関数を使用する

于 2012-08-09T12:57:15.570 に答える
1

配列にすべての文字列があるので、単純に php の組み込み関数を使用しますsort()

次のように機能します。

sort($array);

すべてのファイルが同じディレクトリにあるため、これで間違った順序が解決されるはずです。そうでない場合は、これを試すこともできます。

//Get rid of directory
foreach($array as $key=>$value){
    $value=str_replace('D:\xampp\htdocs\myproject\app\webroot\batch\temp\\','',$value); //Watch out, the last backslash has to be escaped with another backslash, otherwise the string will not end
}

//Sort only the filenames
$sort($array);

//Prepend directory again
foreach($array as $key=>$value){
    $value='D:\xampp\htdocs\myproject\app\webroot\batch\temp\\'.$value;
}
于 2012-08-09T13:13:15.507 に答える