如何在PHP中用新内容覆盖文件内容?

如何在PHP中用新内容覆盖文件内容?,php,file,Php,File,我尝试使用fopen,但我只设法将内容附加到文件的末尾。是否可以用PHP中的新内容覆盖所有内容?使用 或者,如果您被卡住了,可以使用w或w+模式: 'w'仅限书写;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它 “w+”开放阅读和写作;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它 我的首选方法是使用fopen、fwrite和fclose[这将减少CPU成本] $f=fopen('myfile.txt','w'); fwrite($f,

我尝试使用fopen,但我只设法将内容附加到文件的末尾。是否可以用PHP中的新内容覆盖所有内容?

使用

或者,如果您被卡住了,可以使用
w
w+
模式:

'w'仅限书写;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它

“w+”开放阅读和写作;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它


我的首选方法是使用fopen、fwrite和fclose[这将减少CPU成本]

$f=fopen('myfile.txt','w');
fwrite($f,'new content');
fclose($f);
对使用文件内容的用户发出警告


它会对性能产生很大影响,例如[在同一类/情况下]文件\u获取\u内容也一样:如果你有一个大文件,它会一次性读取整个内容,并且该操作可能需要很长的等待时间

听起来像是你在事故中使用了“a”模式。确保使用“w”模式:仅打开以进行写入;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它。
fopen
在很多情况下都是正确的工具
file\u put\u contents
file\u get\u contents
经常被错误地用于大字符串,这会影响性能。file\u put\u contents对我来说不会覆盖现有内容,它只是将其追加到末尾。@dlofrodloh对于新手来说:除非明确添加
file\u append
标志,否则不应该追加。我不知道可能是错误地附加了旧的PHP版本。在7.2中,它会按预期进行覆盖。@MatthewFlaschen我正在使用
PHP7.0
,而
fwrite()
正在向文件中添加数据。您能告诉我如何使用
fwrite
覆盖该文件吗?虽然这可以回答问题,但最好提供一些关于此代码如何帮助的解释。如果您的脚本无法创建有问题的文件,它可能会失败。当您尝试仅删除一个文件时,为什么要附加递归标志(“-r”)?这是一个非常糟糕的尼克斯练习。此外,您可以通过简单地使用PHP的unlink('myfile.txt')来实现同样的功能,而不是特意使用exec()或shell_exec(),系统管理员可以出于安全目的禁用这些功能。
$fname = "database.php";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));
$content = str_replace("192.168.1.198", "localhost", $content);

$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);
$f=fopen('myfile.txt','w');
fwrite($f,'new content');
fclose($f);