使用PHP,因为我有一个foreach循环通过glob输出一些图像,我想提取图像上传的日期和时间。
上传时我将它们命名如下:
1234567_29052017-122959.jpg
_之前的第一个数字序列是一个帐号,这是要删除的。第二个数字序列是日期,所以2017年5月29日。第三个数字序列是一天中的时间,所以12:29:59。每个文件名在下面的foreach中输出为$ image:
$dirname = 'photos/' . $account . '/';
$images = glob($dirname.'*.jpg');
If ($images == null ) {
echo "There was no photos returned for the account number that you entered.";
} else {
foreach($images as $image) {
echo '
<div class="viewerContent" style="width:220px; min-height: 160px;">Insert Date Here <br />
<a href="'.$image.'"><img src="'.$image.'" width="220" height="160" title="'.$image.'" /></a><br />
</div>';
}
}
我想要的是从上面给出的例子中提取以下内容。
1234567_29052017-122959.jpg
要
29/05 12:29:59s
有人可以协助我实现这个目标吗?
我将在重复回显的Insert Date Here部分中将结果时间戳添加到foreach。
答案 0 :(得分:2)
$subst = '$1/$2/ $4:$5:$6';
$pattern = '/.*_(\d{2})(\d{2})(\d{4})-(\d{2})(\d{2})(\d{2})/g';
$new = preg_replace($pattern, $subst, $oldstr);
https://regex101.com/r/Pxn2jr/1
编辑忘记了替补。
答案 1 :(得分:0)
是的,像这样爆炸以获取日期:
// Assuming a filename like this "1234567_29052017-122959.jpg"
$filedate = explode('_',$filename)[1];
$filehour = substr(explode('-',$filename)[1], 0, -3);
将字符串转换为日期:
function reformatDate($date, $from_format = 'dmY', $to_format = 'd/m') {
$date_aux = date_create_from_format($from_format, $date);
return date_format($date_aux,$to_format);
}
您的时间,如果格式始终相同 - 请不要检查内容并将其分为2个字符:
$ outputString = chunk_split($ string,2,“:”);
希望这有帮助。