PHP:在文件的特定行之间插入内容?

zf2sa74q  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(146)

假设我有一个TXT文件(some.txt),其中包含以下内容:

  1. data of first line
  2. data of next line
  3. #start-marker
  4. data of next line
  5. #end-marker
  6. data of next line

我想在#start-marker后面写几行
目前,我有这个:

  1. $fp = fopen('some.txt','r+');
  2. $insertPos=0;
  3. while (!feof($fp)) {
  4. $line=fgets($fp);
  5. if (strpos($line, '#start-marker')!==false) {
  6. $insertPos=ftell($fp);
  7. }
  8. fseek($fp,$insertPos);
  9. fwrite($fp,'Data to be written');
  10. fclose($fp);

但是,问题是:

  1. data of first line
  2. data of next line
  3. #start-marker
  4. Data to be written

所有行在新插入的行后消失。
如何做到这一点?
预期输出:

  1. data of first line
  2. data of next line
  3. #start-marker
  4. Data to be written
  5. data of next line
  6. #end-marker
  7. data of next line
ztmd8pv5

ztmd8pv51#

  1. $myfile = file_get_contents('some.txt');
  2. $insert = '#start-marker blah blah blah new data here';
  3. $myfile = str_replace('#start-marker', $insert, $myfile, 1);
  4. file_put_contents('some.txt', $myfile);
oprakyz7

oprakyz72#

我想你是在找append to file。尝试将'r+'改为将模式a+添加到代码中:

  1. $fp = fopen('some.txt','a+');
  2. $insertPos=0;
  3. while (!feof($fp)) {
  4. $line=fgets($fp);
  5. if (strpos($line, '#start-marker')!==false) {
  6. $insertPos=ftell($fp);
  7. }
  8. fseek($fp,$insertPos);
  9. fwrite($fp,'Data to be written');
  10. fclose($fp);

参考:模式参数-http://php.net/manual/en/function.fopen.php

hmmo2u0o

hmmo2u0o3#

寻找js代码注入到文件使用php检查下面的代码使用js文件或文件路径追加代码

  1. <?php
  2. $jsFile = '';
  3. $fileLines = file($jsFile);
  4. $Line1 = 10;
  5. $Line2 = 20;
  6. $Code1 = "js code for line 10";
  7. $Code2 = "js code for line 20";
  8. array_splice($fileLines, $Line1 - 1, 0, $Code1);
  9. array_splice($fileLines, $Line2 - 1, 0, $Code2);
  10. file_put_contents($jsFile, implode('', $fileLines));
  11. ?>

相关问题