【问题标题】:PHP extract date from filename returned in foreachPHP从foreach返回的文件名中提取日期
【发布时间】:2017-05-29 15:16:33
【问题描述】:

鉴于我有一个 foreach 循环通过 glob 输出一些图像,因此使用 PHP,我想提取图像上传的日期和时间。

上传时我将它们命名如下:

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 

谁能帮我实现这个目标?

我将在重复回显的“在此处插入日期”部分中将生成的时间戳添加到 foreach。

【问题讨论】:

    标签: php string filenames


    【解决方案1】:
    $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

    Edit忘记了替代品。

    【讨论】:

    • 谢谢@Álvaro!
    • 很好的答案!简单而客观!
    • 您是否打算去掉 .jpg?我问的原因是它似乎没有,但我注意到 .* 在表达式的开头。
    • @Bolte 那么你想要什么?我现在看到你想要一个“s”结尾。是否要保留第一个数字序列和“.jpg”?
    • 我将替换调整为我需要的 $subst = '$1/$2 $4:$5:$6s';但我需要删除 .jpg。
    【解决方案2】:

    是的,像这样爆炸得到日期:

    // 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, ":");

    希望这会有所帮助。

    【讨论】:

    • 感谢您的尝试:)
    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多