我有一个目录列表代码,其中列出了特定目录中的所有文件。文件名有一个包含 az 和 0-9 以外的特定字符。它就像“i”上方没有点的小“i”。文件名为:“ClrmamePro Kullanımı English.mp4”。看看“Kullanımı”和“英语”。您可以看到“i”和“ı”之间的区别。
现在的问题是,当我列出目录时,php 会自动将字母“ı”转换为“i”,因此在执行重命名时出现错误
rename(E:/workspace/project/ClrmamePro Kullanimi English.mp4,
E:/workspace/project/movie_11.mp4) [<a href='function.rename'>function.rename</a>]: The system cannot find the file specified.
我有一个正则表达式来更正文件名,但由于 PHP 自动将“ı”转换为“i”,我无法捕捉到它。
目录列表的代码如下
function getDirectoryListing($directory) {
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// open directory and walk through the filenames
while ($file = readdir($handler)) {
// if file isn't this directory or its parent, add it to the results
if (strpos($file,'.') !== 0) {
$results[] = $file;
}
}
closedir($handler);
// done!
return $results;
}
echo '<pre>';
print_r(getDirectoryListing('movies'));
echo '</pre>';
得到的 o/pi 如下:
Array
(
[0] => ClrmamePro Kullanimi English.mp4
[1] => Download Gears of War 3 - eSoftZone.webm
[2] => Facebook_ Science and the Social Graph.MP4
)
查看索引 0 处的第一个文件。我目录中的实际文件名是
ClrmamePro Kullanımı English.mp4