我有文件100S與名稱類似:從yyyy-m-dd提取完整日期?
CPC_2001_5_21_7.pdf
CPC_YYYY_M_DD_7.pdf
最後一個號碼是一個頁碼和其無關。我想出來整理到像目錄:
年月日(即:20010521)
我有文件100S與名稱類似:從yyyy-m-dd提取完整日期?
CPC_2001_5_21_7.pdf
CPC_YYYY_M_DD_7.pdf
最後一個號碼是一個頁碼和其無關。我想出來整理到像目錄:
年月日(即:20010521)
您可以提取年,月,日用:
if (preg_match('/^CPC_(\d{4})_(\d{1,2})_(\d{1,2}).*$/', $filename, $matches)) {
list($file, $year, $month, $day) = $matches;
}
你應該用下劃線分割,然後進行格式化新的文件名使用nullpadding。
<?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
)
如果我是你,我會用天上DateTime::createFromFormat
。這允許您指定一個模式並從中創建一個DateTime對象。
因此,例如,
$date = 'CPC_2001_5_21_7.pdf';
$dt = DateTime::createFromFormat('!*Y_n_d_*.*', $date);
然後,您可以建立你想要的數據的字符串:
$filename = $dt->format('Ymd') . '.pdf';
+1不錯,從來不知道那個'createFromFormat'。 – 2011-05-23 19:26:26
爲什麼甚至有CPC_部分?忽略這一點並使用'。*'將允許更廣泛的範圍。另外,你忘了你的分隔符。 – 2011-05-23 19:09:53
當然,如果他們不都是以CPC_開頭,那麼可以使用'。*'代替。 – rid 2011-05-23 19:10:28
但我需要把它放在名稱爲yyyymmdd格式的文件夾中 – siliconpi 2011-05-23 19:10:54