我已经管理(好吧,stackoverflow告诉我如何)搜索我服务器上的目录以及echo和image。问题是文件夹中的图像由IP摄像机yy_mm_dd_hh_mm命名,其中dd(和其他日期数字)具有一个或两个数字。我需要他们有一个前零,所以我不会最终得到,例如,在上午9:50拍摄的图像被视为比最近拍摄的照片更高的值,在上午10:05。 (我希望它将其视为09_50和10_05以解决问题)。
我已经查看了搜索和替换,但无法在我当前的代码中使用它:
function webcam_image () {
foreach (glob( "../camera/IPC_IPCamera*.jpg") as $f ) {
$list[] = $f;
}
sort($list);
echo array_pop($list);
}
示例文件= IPC_IPCamera_13_7_24_9_57_45.jpg
任何帮助都会非常感激!
由于
阿里
答案 0 :(得分:1)
我会完全忽略文件名并使用DirectoryIterator
,获取文件的实际修改日期。这样的事情可能有用。
$files = array();
$iterator = new \DirectoryIterator('/path/to/dir');
foreach ($iterator as $file) {
if(! $file->isDot()) $files[$file->getMTime()] = $file->getFilename();
}
ksort($files);
print_r($files);
请点击此处了解详情:http://php.net/manual/en/class.directoryiterator.php
答案 1 :(得分:1)
如果我理解正确,您可以通过preg_replace
文件处理此问题。
因此,您可以循环浏览文件并执行以下操作
$newFilename = preg_replace('/_([0-9])_/', '_0$1_', $oldFilename);
rename($oldFilename, $newFilename);
答案 2 :(得分:0)
您可以尝试以下内容:
function webcam_image () {
foreach (glob( "../camera/IPC_IPCamera*.jpg") as $f ) {
$digits = explode('_', substr(substr($f, 13), 0, -4));
foreach($digits as &$digit){
$digit = sprintf("%02d", $digit);
}
unset($digit);
$list[] = 'IPC_IPCamera_' . implode('_', $digits) . '.jpg';
}
sort($list);
echo array_pop($list);
}
答案 3 :(得分:0)
您可以使用sprintf()
$list[] = $f;
以下
$list[] = sprintf("%02s", $f);