我使用电影时间函数获得PHP5.3的最后修改时间。这个函数工作得很好,但是当文件名有特殊字符(例如umlauts)时,它似乎有一些问题。
如果我在文件名上运行了umlauts
$stat = filemtime('C:/pictures/München.JPG');然后我得到输出:
Warning: filemtime() [function.filemtime]: stat failed for C:/pictures/München.JPG如果我将文件从"München.JPG“重命名为"Muenchen.JPG”,并再次执行相同的操作:
$stat = filemtime('C:/pictures/Muenchen.JPG');一切都很好!
我的PHP文件在没有BOM的情况下保存为UTF-8,我也尝试过:
clearstatcache();
$stat = filemtime(utf8_encode('C:/pictures/München.JPG'));但这一点也没有帮助。
发布于 2011-10-04 21:26:19
通过下面的代码片段,我发现Windows 7上的文件编码是“ISO8859-1”:
$scandir = scandir('.')
$encoding = mb_detect_encoding($scandir[0], 'ISO-8859-1, UTF-8, ASCII');
echo $encoding;我读过解码将UTF-8字符串转换为ISO-8859-1,因此我最终得到了适用于我的项目的小代码:
$file = 'C:/pictures/München.JPG';
$lastModified = @filemtime($file);
if($lastModified == NULL)
$lastModified = filemtime(utf8_decode($file));
echo $lastModified;感谢所有提交评论的人。你把我引向了正确的方向。:-)
发布于 2013-04-05 07:50:07
尝尝这个
$dir = 'uploads/';
if (is_dir($dir)) { if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
clearstatcache();
if(is_file($dir."/".$file)) {
echo $file;
echo " - ";
echo "Last modified: " . date ("F d, Y H:i:s.", filemtime(utf8_decode($dir."/".$file)));
echo "<br>";
}
}
echo "<br>";
closedir($dh);
}
}https://stackoverflow.com/questions/7639292
复制相似问题