星期一, 7月 20, 2015

列出排序後的圖檔

說明:
每個分類會有對應的圖檔,原本利用id當檔名存
但因介接系統只認檔名,所在在相同檔名下,更換圖檔內容不會觸發介接系統更新圖
因此利用filename加timestamp來觸發(跟css, js加上?v=xxx同義)

做法:
資料夾下會有多個圖檔,而圖檔的filename會夾timestamp,
在不靠其他persistent data的做法下(記在db or file),就直接sort timestamp當最新的圖檔


  1. 取得所有jpg圖
  2. $files = glob("/path/to/directory/*.jpg");
    --
    Array
    (
        [0] => /path/to/directory/1.jpg
        [1] => /path/to/directory/2.jpg
        [2] => /path/to/directory/3.jpg
    )
    
  3. 加上其他圖檔格式(靠GLOB_BRACE)
    $images = glob("files/*.{jpg,gif,png}", GLOB_BRACE);
    
  4. 還有大小寫問題 >_<
    $images = glob("files/*.{[jJ][pP][gG],[gG][iI][fF],[pP][nN][gG]}", GLOB_BRACE);
    


  5. 排序部份靠php,完整的寫法如下(如果還要其他圖檔格式,就自己加囉)
    $images = glob("files/*.{[jJ][pP][gG],[gG][iI][fF],[pP][nN][gG]}", GLOB_BRACE);
    $sorted = rsort($images); //由大到小
    


Reference
Using PHP's glob() function to find files in a directory