PHP 从 foreach 返回的文件名中提取日期
PHP extract date from filename returned in foreach
使用 PHP 鉴于我有一个 foreach 循环通过 glob 输出一些图像,我想提取图像上传的日期和时间。
我在上传的时候给它们起的名字是这样的:
1234567_29052017-122959.jpg
_前面的第一串数字是账号,这个要去掉。第二个数字序列是日期,即 29/05/2017。第三个数字序列是一天中的时间,所以 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。
$subst = '// ::';
$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
编辑忘了替换。
是的,像这样分解得到日期:
// 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 个字符乘以 2:
$outputString = chunk_split($string, 2, ":");
希望对您有所帮助。
使用 PHP 鉴于我有一个 foreach 循环通过 glob 输出一些图像,我想提取图像上传的日期和时间。
我在上传的时候给它们起的名字是这样的:
1234567_29052017-122959.jpg
_前面的第一串数字是账号,这个要去掉。第二个数字序列是日期,即 29/05/2017。第三个数字序列是一天中的时间,所以 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。
$subst = '// ::';
$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
编辑忘了替换。
是的,像这样分解得到日期:
// 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 个字符乘以 2:
$outputString = chunk_split($string, 2, ":");
希望对您有所帮助。