因此,出于我所有的PHP技能,我只是吮吸正则表达式。我完全理解它的概念,但我不能很好地写出我的模式。那么我需要他们从文件路径中提取日期信息。这是我的代码:preg_match php,形成图案
#example path
$path='/Users/landonsilla/Desktop/HS Pilot Project/Archive/Cabinet/Documents/2006-11In/Car Park/AR190298.doc';
echo $path."\n\n";
$pattern1 = '/[0-9]{4}[0-9]{2}[0-9]{2}/';#match YYYYMMDD
$pattern2 = '/[0-9]{4} [0-9]{2} [0-9]{2}/';#match YYYY MM DD
$pattern3 = '/[0-9]{4}[-][0-9]{2}/';#match YYYY-MM
$pattern4 = '/20[0-9]{2}/';#match YYYY
if(preg_match($pattern1, $path, $matches)){
$ret=$matches[0].'-'.$matches[1].'-'.$matches[2].' 00:00:00';
}
else if(preg_match($pattern2, $path, $matches)){
$ret=$matches[0].'-'.$matches[1].'-'.$matches[2].' 00:00:00';
}
else if(preg_match($pattern3, $path, $matches)){
$ret=$matches[0].'-'.$matches[1].'-01 00:00:00';
}
else if(preg_match($pattern4, $path, $matches)){
$ret=$matches[0].'-01-01 00:00:00';
}
else{
$ret=date ("Y-m-d H:i:s.", filemtime($path));
}
$ pattern1,2,3,4变量不起作用。有人可以让我知道如何改变这些变量,以便我可以以标准(mysql)格式结束$ ret的日期吗?
对于您使用的匹配项,您没有任何组。 'var_dump()'是你的朋友,从测试文件中的单个模式开始,进行调试直到你得到结果。 – hakre
http://rubular.com是一个很棒的测试工具。 – deceze
以及我正在使用print_r()(在这种情况下var_dump相同的东西),但我似乎无法从一个函数调用 – Landon