问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php实现将一个文件中的内容替换

发布网友 发布时间:2022-04-06 03:06

我来回答

3个回答

热心网友 时间:2022-04-06 04:36

命令行下 “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的文件覆盖追问哎 不是说的最多的就是沾边的啊

热心网友 时间:2022-04-06 05:54

//用正则表达式去匹配
//成功返回 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;
}追问$content = preg_replace('/(hostname[\s]+'.$host.'[\s]{0,}[\r\n]+hostip[\s]+)[^\r\n]+/', "$1 $ip", $content);
能帮我解释下含义吗?另外,如果我1.txt中的内容每行前面都有一些空格该怎么办?比如:
hostname aaa
hostip 192.168.0.1
hostname bbb
hostip 192.168.1.100
......
好像这样就没办法了

追答详细的去看一下正则表达式的语法
[\s]+ 匹配一个或多个空白字符
[\s]{0,} 匹配 0 个或多于 0 个的空白字符
[\r\n]+ 匹配一个或多个换行或回车
[^\r\n]+ 匹配不包换回车或换行的多个字符

连在一起就是 hostname 后面跟着你要把主机名,然后下面一行是 hostip, 然后看是否符合这条件,或是符合的话就替换

若是下一行前面有空格的话改一下
$content = preg_replace('/(hostname[\s]+'.$host.'[\s]{0,}[\r\n]+hostip[\s]+)[^\r\n]+/', "$1 $ip", $content);
改成
$content = preg_replace('/(hostname[\s]+'.$host.'[\s]{0,}[\r\n]+[\s]{0,}hostip[\s]+)[^\r\n]+/', "$1 $ip", $content);
就是多加一个 [\n\r]+ 加一个空白处理[\s]{0,}

热心网友 时间:2022-04-06 07:28

建议使用占位符 str_replace 来生成

如果读取已有的建议 explode 分割,查询
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
理想液晶电视LED328O出现开机画面后无任何反应 我的photoshop 8 .0版本不知道为什么打不开 安徽医科大学临床医学院新增专业有哪些 intelx79主板怎么样 怎样防范电信诈骗,如何应对诈骗信息? yyds怎么回复 在看守所未判人员,却生了重病该怎么办?好无助的我求贵人帮助 持刀伤人导致轻微伤属于什么案件 持刀故意伤人致轻微伤的处罚和赔偿情况分别是什么 美国本土大部分处于什么纬度主要气候类型是什么中 采用PHP,能否简单实现“词组、成语”的批量替换呢? php如何替换指定位置的相同字符 php代码在论文查重的时候提示重复请问怎么修改? php 同义词互换 伪原创 打开页面错误 错误代码:403 虚幻4不能打包的问题 网页出现403无法访问的错误是什么意思?不是禁止访问啊! 网站403错误怎么解决 如何解决错误类型403 网站访问时,出现403错误,该怎么解决?具体怎么操作? 错误代码403是什么意思 403错误,有办法解决么 403错误是什么 403错误怎么解决 403拒绝访问解决办法是什么? 错误代码403怎么解决… 错误代码403是什么意思啊?出现了该怎么办 怎样评价cpu好坏,看那些参数? 再就是cpu品牌的排名? windows server 2008 R2 sp1评估有两个版本:下载64位版本,下载基于Itanium的版本,这两个版本有什么区别 关于电脑问题 双核1.3GHz与单核双线程1.6GHz。。。比较怎么样? 如何实现php替换文件。就是把整个文件替换掉。 php 中怎么替换数组中相同的元素? php如何替换掉 ? php怎么禁止通过url直接下载到网站视频,但不影响视频播放 Apache+PHP能否防止非法用户下载文件 IE浏览器中点击wmv视频链接直接出现下载窗口。怎么样才能不下载直接在网页内播放? php如何禁止查看源文件? php视频地址加密 知道视频的地址却无法下载 PHP视频播放地址加密 PHP这么防止include文件被直接绝对URL访问. php有没有在服务器上从远程url下载的功能 设置了权限的视频怎样下载 php可以连接服务器执行脚本登陆qq吗,具体怎么做? JSP、PHP网站是怎么实现:使用QQ登录本网站 php 绑定qq登陆 php网站集成QQ登陆功能 PHP模拟登陆QQ空间 [PHP] 用户登录 仿照 QQ客户端一样能否行?[高手支招] phpwind如何添加QQ登陆