我试图修改我在tokuwiki中使用的txt文件。
我在txt文件的顶部生成时间戳,如下所示:
function filecont($file,$data)
{
$fileContents = file($file);
array_shift($fileContents);
array_unshift($fileContents, $data);
$newContent = implode("\n", $fileContents);
$fp = fopen($file, "w+");
fputs($fp, $newContent);
fclose($fp);
}
我原来的txt文件如下所示:
现在当我使用我的功能时:
$txt= "Last generated: " . date("Y M D h:i:s");
filecont($file,$txt);
我得到这样的结果:
现在我不想删除====== Open IoT book ======
,这可能是因为我在第一行没有空位?
但是我遇到的最严重的问题就是会产生许多我不想要的空位。
我只想将last generated
放在txt文件的顶部,其他任何内容都未触动
答案 0 :(得分:2)
我测试了您的代码并通过更改行删除了额外的换行符:
$fileContents = file($file);
到
$fileContents = file($file, FILE_IGNORE_NEW_LINES);
添加FILE_IGNORE_NEW_LINES标志会停止向每个元素/行添加换行符。
http://php.net/manual/en/function.file.php
我还删除了array_unshift(),它离开了' ====== Open IoT book ======'在文件中。
所以我的最终功能看起来像这样:
function filecont($file,$data)
{
$fileContents = file($file, FILE_IGNORE_NEW_LINES);
//array_shift($fileContents); Removed to preserve '====== Open IoT book ======' line.
array_unshift($fileContents, $data);
$newContent = implode("\n", $fileContents);
$fp = fopen($file, "w+");
fclose($fp);
}
答案 1 :(得分:1)
可能只是删除此行
array_shift($fileContents);
解决你的问题?
答案 2 :(得分:1)
当你获得文件元素时,你需要检查Last generated:
是否是你的第一行或不符合它你需要使用array_shift
$fileContents = file($file);
if(stripos($fileContents[0],"Last generated:") !== false)
{
array_shift($fileContents); //if found use shift
}
array_unshift($fileContents, $data);