PHP - 在文件的某个位置写入字符串

时间:2014-07-06 05:23:17

标签: php

我在文本文件中有以下字符串:

<!-- 
///////////////////////////////////////////////////////////////////////////////////////
//
// Individuals
//
///////////////////////////////////////////////////////////////////////////////////////
 -->

我需要在上面的部分写下两行的文字。还有许多其他部分,如上面的部分,但每个部分都不重复,所以我知道只有一个&#34;个人&#34;。

我需要覆盖文件,那么如何设置输出的位置呢?

1 个答案:

答案 0 :(得分:2)

有两种方法:

  1. 逐行读取文件。检查每一行是否符合某些条件。如果是,请插入行。
  2. 阅读完整文件,替换所需文本并写入完整文件。
  3. 只要您的流量不是太高,方法2就会更简单。为了替换整个块,我建议使用这个正则表达式:

    /(<!--[\s\r\n/]*Individuals[\s/]*)[^\s/]*([\s/]*-->)/
    

    它匹配包含&#34;个人&#34;的整个块。然后是新线上的一些内容。用括号捕获单独内容之前的块,以便进行替换:

    $content = file_get_contents('myfile.txt');
    $newContent = preg_replace("@(<!--[\s\r\n/]*Individuals[\s/]*)[^\s/]*([\s/]*-->)@", "$1$myNames$2", $content);    
    file_put_contents('myfile.txt', $newContent);
    

    preg_replace将块的第一部分,一些斜杠和&#34; Individuals&#34;以及$myNames连接在一起,并与块的结束部分连接到一个新块

    我最后没有在shell中测试过这个,所以我为可能的拼写错误道歉。但我相信这会有用。