PHP修改文件内容的方法

有时,我们需要用PHP在线修改一些配置文件,这时,需要先打开并读取文件到变量,再替换文字,最后写入文件。代码如下:

//如果文件不存在就创建文件
$file_pointer = fopen("aa.txt","a+");
fwrite($file_pointer,$str);
fclose($file_pointer);
//读取文件
$file_name="aa.txt";
$fp=fopen($file_name,'r') or die("Unable to open file!");
while(!feof($fp))
{
$buffer=fgets($fp,4096);
//替换文本
$buffer = str_replace("nowamagic","现代魔法",$buffer);
$buffer = str_replace("This is a test","这是一个实例",$buffer);
$zjbw = $zjbw.$buffer;
}
fclose($fp);

echo $zjbw ;
//写入文件
$myfile = fopen("aa.txt", "w") or die("Unable to open file!");
fwrite($myfile, $zjbw );
fclose($myfile);

以上例子中,aa.txt文件原来的内容是“This is a test from www.nowamagic.netn”,运行后,变成了”这是一个实例 from www.现代魔法.netn”,实现在文本的修改替换。经测试,该方法仅能替换简单的文本,复杂的包含代码换行的的,内容会被清空。

改进后的代码如下,除替换的字符不能带有$符号外,其它都可以:

//接收图片链接
$ads1link3 = stripslashes(trim($_POST['link3'])); //接收链接
//读取文件
$file_name="../inc/conn.php";
$fp=fopen($file_name,'r') or die("Unable to open file!");
while(!feof($fp))
{
$buffer=fgets($fp,4096);
$zjbw = $zjbw.$buffer;
}
//替换文本
$ylj = getSubstr($zjbw, 'ads1link3="', '"');//提取原链接
$clhwb = str_replace('ads1link3="'.$ylj,'ads1link3="'.$ads1link3,$zjbw);//替换
fclose($fp);
//写入文件
$myfile = fopen($file_name, "w") or die("Unable to open file!");
fwrite($myfile, $clhwb);
fclose($myfile);

这里,增加了一个提取文本中间内容的函数,如下:

//php取中间文本函数
function getSubstr($str, $leftStr, $rightStr)
{
preg_match("|$leftStr([^^]*?)$rightStr|u", $str, $matches);
return $matches[1];
}

feof() 函数检测是否已达到文件的末端 (EOF),在循环遍历未知长度的数据时,feof() 函数很有用。注释:在 w 、a 以及 x 模式,您无法读取打开的文件!

fgets() 函数用于从文件中逐行读取文件。在调用该函数之后,文件指针会移动到下一行。

fopen() 函数用于在 PHP 中打开文件,此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件。

r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末端写内容,来保持文件内容。
x 只写。创建新文件。如果文件以存在,则返回 FALSE。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

未经允许不得转载:教师文摘 » PHP修改文件内容的方法

赞 (2)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址