有一些关于这个的线程,但是我找不到任何处理在指定(唯一)点之后将文本插入无序文本文件,而不修改文件的任何其余部分(我道歉,如果有的话)我错过了。)
我的代码目前似乎有效:
if($file=fopen('dadada.txt','r+'))
{
echo 'File opened';
$switch=0; //This variable will indicate whether the string has has been found.
$back=0; //This counts the number of characters to move back after reaching eof.
}
while(!feof($file))
{
$string=fgets($file);
if($switch==1)
{
$back+=strlen($string);
$modstring=$modstring.$string;
}
if(strpos($string,'thing to find')!==FALSE)
{
echo 'String found';
$switch=1;
$string=fgets($file);
$modstring='test'.$string;
$back+=strlen($string);
}
}
$back*=-1;
fseek($file,$back,SEEK_END);
fwrite($file,$modstring);
fclose($file);
?>
但这似乎非常不优雅,特别是开关变量开始记录文件的内容。我认为有一种比我的解决方案更好的方法。有吗?
感谢您的帮助。
答案 0 :(得分:0)
按新行分解文件。
这将为每行提供一个很好的数组。
循环浏览并找到插入点并添加要添加的文本。
然后将其内爆并将其写回文件。