本文目录一览:
- 1、php实现将一个文件中的内容替换
- 2、PHP如何写入,读取与替换文件内容
- 3、php读取目录及子目录下所有txt文件,再替换每个txt文件里system字符
- 4、php接收二进制文件怎么替换里面的内容
- 5、php读取目录及子目录下所有txt文件,再替换每个txt文件里指定字符
php实现将一个文件中的内容替换
命令行下 “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的文件覆盖
PHP如何写入,读取与替换文件内容
$content = file_get_contents($file); //读文件
$content = $content . '正在修改'; //修改文件
file_put_contents($file, $content); //保存文件
php读取目录及子目录下所有txt文件,再替换每个txt文件里system字符
php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下:
$dir="./目录名/";
$file=scandir($dir);
print_r
($file);
php接收二进制文件怎么替换里面的内容
php接收二进制文件怎么替换里面的内容
php接收二进制文件如下:
?php
header('Content-type: text/html; charset=utf-8');
error_reporting(0);
$filename = $_GET["filename"];
$filesize = $_GET["filesize"];
$xmlstr = $GLOBALS[HTTP_RAW_POST_DATA];//$_POST["data"];//
if(empty($xmlstr)) $xmlstr = file_get_contents('php://input');
$raw = $xmlstr;//得到post过来的二进制原始数据
$file = fopen("./upload/".$filename,"w");//打开文件准备写入
fwrite($file,$raw);//写入
fclose($file);//关闭
?
接收的二进制文件中非标准字符(0x7F)的字节被替换为三个字节,比如E2替换为EF 9F A2
现在我想在Php接收到文件之后还原回去,把EF 9F A2替换为E2,请问这个怎么实现?
非常感谢!
PHP 二进制
------解决方案--------------------
他的数据转换规则是这样的:
文件头不变,文件头多长不清楚,图上到0050h都一样的
=7F的字节,因为utf-8也一样,可以认为也转换了utf-8
=80的字节,高位加上F7,再转utf-8,例如E2就变成F7E2然后转utf-8成为EF 9F A2
至少他图中E2/FB/91/B2/81...都满足这个规则
------解决方案--------------------
本帖最后由 xuzuning 于 2013-05-02 15:35:02 编辑
用正则可这样写
假定数据已把存在变量 $s 中,则
$s = preg_replace_callback('/[\xef]../', 'foo', $s);
function foo($r) {
$c = (ord($r[0]{1}) 0x03) 6;
$c += (ord($r[0]{2}) 0x3f);
return chr($c);
}
php读取目录及子目录下所有txt文件,再替换每个txt文件里指定字符
直接给你代码:
?php
function replaceStringInTxt($path)
{
$path = ltrim($path, '/') . '/';
$files = scandir($path);
if ($files) {
foreach($files as $file) {
if ($file == '.' || $file == '..' ){
continue;
}
$newPath = $path. $file;
if (is_dir($newPath) {
replaceStringInTxt($newPath);
}else{
//开始替换
$content = file_get_contents($newPath);
$content = str_replace("system****config", "config", $content);
file_put_contents($newPath, $content);
}
}
}
}
//目录的地址
$path = "C://aa";
//执行
replaceStringInTxt($path);
By the way, 代码未经检验,请自行 debug , 随便写的。