【发布时间】:2013-01-28 08:17:56
【问题描述】:
我正在尝试使用 PHP 批量重命名文件夹中的文件。虽然我在重音字符方面遇到问题,但它大部分都在工作。
带有重音字符的文件名示例是ÅRE_GRÖN.JPG。
我想将该文件重命名为ARE_GRON.JPG。
如果我这样读取文件:
<?php
$path = __DIR__;
$dir_handle = opendir($path);
while ($file = readdir($dir_handle)) {
echo $file . "\n";
}
closedir($dir_handle);
...页面显示AÌŠRE_GRÖN.JPG。
如果我在脚本开头添加header('Content-Type: text/html; charset=UTF-8');,它会显示正确的文件名,但rename() 函数似乎没有任何效果。
这是我尝试过的:
while ($file = readdir($dir_handle)) {
rename($file, str_replace('Ö', 'O', $file)); # No effect
rename($file, str_replace('Ö', 'O', $file)); # No effect
}
我哪里出错了?
如果您认为我在工作中使用了错误的工具,请说出来。如果有人知道如何使用 Bash 脚本实现这一点,请告诉我。我没有 Bash 排骨。
【问题讨论】:
-
你是用windows还是linux?
-
您的 PHP 脚本是否编码为 UTF-8?
-
既然他说的是 bash,我猜他指的是 bash(1),这会暗示 Lunix。
-
这是我能找到的:bugs.php.net/bug.php?id=39660 但是我相信应该已经有一个解决方法,比如使用 PHP 可以使用的编码系统。如果我找到任何东西,我会发布答案。也可以复制到:stackoverflow.com/questions/873853/…
-
在 cygwin 上很容易成为 Bash,在 Windows 或 FreeBSD 上本机。