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