新的PHP程序员在这里。 我一直在试图通过更换扩展到一个文件夹中的所有文件重命名。
我正在使用的代码是在回答关于SO类似的问题。
if ($handle = opendir('/public_html/testfolder/')) {
while (false !== ($fileName = readdir($handle))) {
$newName = str_replace(".php",".html",$fileName);
rename($fileName, $newName);
}
closedir($handle);
}
运行该代码时,我没有错误,但没有改变的文件名进行。
为什么这任何有识之士不工作? 我的权限设置应该允许它。
提前致谢。
编辑:检查重命名(),现在正试图与水珠(),它可能比执行opendir一个更好的选择的东西...的返回值时,我得到一个空白页?
编辑2:随着第二代码片断之下,我可以打印$ newfiles的内容。 所以数组存在,但str_replace函数+重命名()片段失败来改变文件名。
$files = glob('testfolder/*');
foreach($files as $newfiles)
{
//This code doesn't work:
$change = str_replace('php','html',$newfiles);
rename($newfiles,$change);
// But printing $newfiles works fine
print_r($newfiles);
}
你可能在错误的目录工作。 确保前缀$文件名和$了newName与目录。
特别是,执行opendir和readdir的不沟通就当前工作目录重命名的任何信息。 READDIR只返回文件的名称,而不是它的路径。 所以你只需通过文件名来命名。
像下面的东西应该更好的工作:
$directory = '/public_html/testfolder/';
if ($handle = opendir($directory)) {
while (false !== ($fileName = readdir($handle))) {
$newName = str_replace(".php",".html",$fileName);
rename($directory . $fileName, $directory . $newName);
}
closedir($handle);
}
下面是简单的解决方案:
PHP代码:
// your folder name, here I am using templates in root
$directory = 'templates/';
foreach (glob($directory."*.html") as $filename) {
$file = realpath($filename);
rename($file, str_replace(".html",".php",$file));
}
上面的代码转换所有.html
文件.php
你确定
opendir($directory)
作品? 你检查了吗? 因为它看起来可能有一些文档根在这里失去了...
我会尝试
$directory = $_SERVER['DOCUMENT_ROOT'].'public_html/testfolder/';
然后Telgin的解决方案:
if ($handle = opendir($directory)) {
while (false !== ($fileName = readdir($handle))) {
$newName = str_replace(".php",".html",$fileName);
rename($directory . $fileName, $directory . $newName);
}
closedir($handle);
}
如果文件被打开情况。 那么PHP不能做对文件进行任何更改。
<?php
$directory = '/var/www/html/myvetrx/media/mydoc/';
if ($handle = opendir($directory)) {
while (false !== ($fileName = readdir($handle))) {
$dd = explode('.', $fileName);
$ss = str_replace('_','-',$dd[0]);
$newfile = strtolower($ss.'.'.$dd[1]);
rename($directory . $fileName, $directory.$newfile);
}
closedir($handle);
}
?>
非常感谢你的建议。 它的工作对我来说!