Trying to insert text into a file ABOVE a certain line

有些话、适合烂在心里 提交于 2019-12-09 23:18:12

问题


I have a text file, more of a users file for a program. Im trying to use PHP to insert new data before groups: in the file. The last user is above this line and i want to insert new users below the last user and above groups: in the file

Ive been tinkering and was trying some things, but i can only get it after that line.

heres what i have

$key = 'groups:';
$newline = 'blackberry';

//copy file to prevent double entry
$file = "data2.yml";
$newfile = "filetemp.txt";
copy($file, $newfile) or exit("failed to copy $file");

//load file into $lines array
 $fc = fopen ($file, "r");
 while (!feof ($fc))
 {
    $buffer = fgets($fc, 4096);
    $lines[] = $buffer;
 }

fclose ($fc);

//open same file and use "w" to clear file
$f=fopen($newfile,"w") or die("couldn't open $file");

/* uncomment to debug */
print_r($lines);
print "
\n"; //loop through array using foreach foreach($lines as $line) { fwrite($f,$line); //place $line back in file if (strstr($line,$key)){ //look for $key in each line fwrite($f,$newline."\n"); } //place $line back in file } fclose($f); copy($newfile, $file) or exit("failed to copy $newfile"); ?>

Its a yml file, so i cant add an extra line to post after or it screws up and refuses to run.

thanks!


回答1:


your foreach code should be:

foreach($lines as $line)
{
    if (strstr($line,$key)){ //look for $key in each line
        fwrite($f,$newline."\n"); //insert data before line with key
    } 
    fwrite($f,$line); //place $line back in file
}

This way you will write the new data first then the original data.



来源:https://stackoverflow.com/questions/5106719/trying-to-insert-text-into-a-file-above-a-certain-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!