1
我有幾十萬個來自幾個不同來源的文件。文件中的每一個在名稱中的日期,但文件名結構不同,例如:從文件名PHP提取日期
2015-10-05-importsrc1.txt
20151004importsrc2.txt
importsrc3-154826-4521-2015-10-06.csv
importsrc4-154826-4521-20151006.txt
我需要處理的是當月和下月忽略任何舊文件的文件。
我已經看到了一些使用循環檢查特定文件的示例,以檢查所需的日期,但我試圖避免太多的循環,並可能使用正則表達式來匹配日期,然後進行比較。
目前我使用下列命令(其中$f
是文件名和擴展名):
//CHANGED THIS TO SKIP OLD ONES
if(strpos(str_replace("-", "", $f), "201510") == false)
{
continue;
}
但上個月這僅適用於目前硬編碼的,最好我需要的東西,如:
//CHANGED THIS TO SKIP OLD ONES
$extractedDate = preg_match('DATEPATTERN',(str_replace("-", "", $f), "201510"),$extractedDate);
if(strtotime($extractedDate[0]) < date('Y-m-d',(strtotime ('-1 Month', strtotime (date('Y-m-d)))))
{
continue;
}
我知道我可以簡單地改變我的第一次嘗試,添加另一個條件並使其成爲動態的,但如果我能夠提取日期,這將有助於許多方面。
你試圖說你正在尋找匹配'201510'和'2015-11'像子文件名嗎?類似於['2015 [ - ]?1 [10]'](https://regex101.com/r/tQ8oF4/2)? –
你應該給其他的測試用例(以及一些你不想保留的測試用例),月份和日期是兩位數字嗎? – Tensibai
@stribizhev爲什麼有空格? – Tensibai