从yyyy-m-dd中提取富尔酸?

时间:2011-05-23 19:05:30

标签: php regex

我有100个文件,名称如下:

 CPC_2001_5_21_7.pdf
 CPC_YYYY_M_DD_7.pdf

最后一个数字是页码,无关紧要。我想将它们分类到以下目录中:

YYYYMMDD(即:20010521)

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容提取年,月和日:

if (preg_match('/^CPC_(\d{4})_(\d{1,2})_(\d{1,2}).*$/', $filename, $matches)) {
    list($file, $year, $month, $day) = $matches;
}

答案 1 :(得分:2)

如果我是你,我会使用天上的DateTime::createFromFormat。这允许您指定一个模式并从中创建一个DateTime对象。

所以,例如,

$date = 'CPC_2001_5_21_7.pdf';
$dt = DateTime::createFromFormat('!*Y_n_d_*.*', $date);

然后,您可以使用所需的数据构建一个字符串:

$filename = $dt->format('Ymd') . '.pdf';

答案 2 :(得分:0)

您应该用下划线拆分,然后使用空白区域格式化新文件名。

<?php
    $filenames = array(
        "CPC_2001_5_21_7.pdf",
        "CPC_2002_2_13_7.pdf",
        "CPC_2004_6_23_7.pdf"
    );
    $newfilenames = array();

    foreach($filenames as $filename)
    {
        $split = explode("_", $filename);

        $newfilenames[] = sprintf("%04s%02s%02s", $split[1], $split[2], $split[3]) . ".pdf";
    }

    print_r($newfilenames);
?>

输出

Array
(
    [0] => 20010521.pdf
    [1] => 20020213.pdf
    [2] => 20040623.pdf
)