2014-09-21 88 views
0

我被卡住了。如果文件包含日期,如何創建日期類別?

我想大家都知道Gyazo(快速截圖服用程序),如果不是LINK。 幾個月前,我在我的FTP上創建了一個文件夾。我製作的所有屏幕截圖都將上傳到FTP上的該文件夾。

圖像名稱是自動創建的(yyyymmddhhmmss);

Example: 20140921132714.PNG 

我做了一個頁面,我只能訪問它來查看圖片。但是我怎樣才能創建一個類別,而不需要連接數據庫來獲得額外的信息。

Example: 

January 2014 
picture1, picture 2, picture 3 

December 2013 
picture 4, picture 5 etc. 

在此先感謝!

+3

只是想告訴你:我不認識Gyazo。 – idmean 2014-09-21 11:34:30

+0

我假設每個人都知道Gyazo是什麼,這很糟糕。編輯 – Mossawi 2014-09-21 11:36:53

+0

在你的php代碼中使用date('Ym',strtotime($ filename))創建一個動態數組並插入相關文件...仍然必須從ftp掃描整個目錄 – 2014-09-21 11:43:19

回答

0

據我瞭解,你只需要按年份對這些文件進行分組。簡單的方法將只是迭代它,如:

$files = ['20140921132714.PNG', '20140921132724.PNG', '20140921132734.PNG']; 
$groupedFiles = []; 
foreach ($files as $file) { 
    $yearmonth = substr($file, 0,6); 
    $groupedFiles[$yearmonth][] = $file; 
} 

var_dump($groupedFiles); 

現在你有你的所有文件數組設置yearmonth作爲數組的關鍵。迭代它並打印出你的截圖

0

既然你使用了PHP標籤,我假設你想在PHP中做到這一點?我看你能做到這一點,沒有一個數據庫(我就喜歡)的唯一方法,就是:

1:閱讀整個文件夾的FTP服務器上:

$ftp_server = "ftp.example.com"; 
$ftp_user = "foo"; 
$ftp_pass = "bar"; 
$ftp_dir = "."; 

// set up a connection or die 
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

// try to login 
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{ 
    $list = ftp_nlist($conn_id,$ftp_dir); 
} 
else echo "Couldn't connect as $ftp_user\n"; 

// close the connection 
ftp_close($conn_id); 

2:過程中你讀什麼爲日期的PHP可以理解:

foreach ($list as $filename) 
{ 
    // get date of each file 
    if (is_numeric(substr($filename,0,14))) 
    { 
    $year  = substr($filename,0,4); 
    $month  = substr($filename,3,2); 
    $day  = substr($filename,5,2); 
    $hour  = substr($filename,7,2); 
    $minute = substr($filename,9,2); 
    $second = substr($filename,11,2); 
    $timestamp = strtotime("$year-$month-$day $hour:$minute:$second") 
    $datedList[$timestamp] = $filename; 
    } 
} 
unset($list); 
// sort on dates 
ksort($datedList); 

3:顯示它的HTML頁面:

$currentDate = ''; 
foreach ($datedList as $time=> $filename) 
{ 
    $date = date('F Y',$time); 
    if ($currentDate != $date) 
    { 
    // start new day 
    echo "<br><b>$date:</b><br><br>"; 
    $currentDate = $date; 
    } 
    // show file 
    echo "$filename<br>"; 
} 

通過改變date()函數,使用參數'F j, Y',您可以輕鬆顯示日期而不是幾個月。擁有真正的日期也可以讓你不用自己顯示文件名,但可以在文件生成時顯示人類可讀的日期。您可以將第二步和第三步合併爲一步。爲了清晰起見,我將它們分開。如果你真的想讓文件名可點擊並顯示屏幕截圖,你還需要在最後一部分工作一下。