命令行下 “ren *.php *.htm” 就可以啊
如果不只是为了修改文件名 而是为了由动态页面生成静态页面 也就是说生成的htm是那个php的预览效果页面
那么具体的还得根据你的php内部代码处理
看你提供的那段代码好像就是实现了一个修改文件名的功能 如果你不愿用命令 就是想用php实现这一功能的话 可以这么写:
$path="./";
$d = dir($path);
while($f=$d->read()) {
if($f=="."||$f=="..")continue;//去掉目录列表中的.和..
$filename=rand(1111111111,9999999999).".htm";//从1111111111-9999999999 中产生一个随机数作为文件名
copy($f,$filename);
}
这个就可以实现你说的功能
但是还有点不是很完善的 你还可以设置输出的路径,检查拷贝状态 多少文件成功多少失败等等 如下
$path="./";
$outputpath="out/";//输出目录
@mkdir($outpath);//如果输出目录不存在 则创建 已经存在创建失败,但不显示出错信息
$d = dir($path);
$i=0;//记录文件数量
while($f=$d->read()) {
if($f=="."||$f=="..")continue;//去掉目录列表中的.和..
$i++;
$filename=$outpath.rand(1111111111,9999999999).".htm";//从1111111111-9999999999 中产生一个随机数作为文件名
if(copy($f,$filename))$j++;//拷贝成功的文件个数+1
else continue;
}
echo "共 $i 个文件 成功拷贝 $j 个文件";
我看到你的消息了 你是要获取所有的页面的预览效果
只需要在copy的文件加上预览的路径就可以了
$path="./"; //文件读取目录
$d = dir($path);
$i=0;//记录文件数量
while($f=$d->read()) {
if($f=="."||$f==".."||$f=="copyfile.php")continue;//去掉目录列表中的.和..以及当前执行的文件
$i++;
$filename=str_replace(".php",".htm",$f);//将文件的.php替换成.htm
if(copy("".$f,$filename))$j++;//拷贝成功的文件个数+1
else continue;
}
echo "共 $i 个文件 成功拷贝 $j 个文件";
?>
在用的时候确保你的目录先所有的文件都能顺利的的执行 我在测试的时候因为目录中有几个文件有问题 导致一直不成功 去掉了那几个文件就很快了
在对文件名进行处理的时候 如果你的目录下面还有其他类型的文件,建议这样写 :
$filename=$f.".html";//先将文件扩展名增加.html 比如a.php-》a.php.html
$filename=str_replace(".php.","",$filename); //将".php"去掉 a.php.html->a.html
这样可以避免将里面的非php的文件覆盖
//用正则表达式去匹配
//成功返回 true, $file 文件, $host 主机名,$ip 要替换的新IP
edit('1.txt', 'aaa', '127.0.0.1');
function edit($file, $host, $ip = NULL){
$content = @file_get_contents($file);
if(!$content){
return false;
}
$host = preg_quote($host);
$content = preg_replace('/(hostname[\s]+'.$host.'[\s]{0,}[\r\n]+hostip[\s]+)[^\r\n]+/', "$1 $ip", $content);
return file_put_contents($file, $content) ? true : false;
}
建议使用占位符 str_replace 来生成
如果读取已有的建议 explode 分割,查询