に正規表現グループによってソート:私はこの形式のファイル名の配列を持っているPHP
「A - 1.2 - 床Plan.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";
になるだろう、私は適切にファイル名をグループ化するための次の正規表現があります
を^([A-Z]+?) ?- ?([0-9]+)\.([0-9]+)(\.([0-9]+))?.*$
グループ1、グループ2、グループ3の順に並べ替えたいグループ5が存在する場合、グループ5で最後にソートします。グループ4を無視します。
カテゴリを辞書順に並べ替える方が簡単かもしれません。もしそうなら、それは問題ないでしょう。上記の順序でソートされている方が望ましいでしょう。
PHPでこれを行う方法はありますか?
が、これはその順にすべきではありません:あなたはこのような例のためにそれを使用することができます 'A - 1.0、 A-1.2、A-2.1.0、A-2.1.1、A-2.2、C-1.0、E-1.0、ESC-1.0、M-1.0、P- – Krzysztof
@Lolo、そうじゃない?私はあなたのソート版を私と比較しました。私は違いを見つけることができません。 – objectivesea
あなたは:[...]、** ESC、C、M、E **、[...] 私はちょうどなぜだろうと思っていません:[...] ** C、E、ESC、M ** 、[...] – Krzysztof