我在文本文件中有以下字符串:
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Individuals
//
///////////////////////////////////////////////////////////////////////////////////////
-->
我需要在上面的部分写下两行的文字。还有许多其他部分,如上面的部分,但每个部分都不重复,所以我知道只有一个&#34;个人&#34;。
我需要覆盖文件,那么如何设置输出的位置呢?
答案 0 :(得分:2)
有两种方法:
只要您的流量不是太高,方法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中测试过这个,所以我为可能的拼写错误道歉。但我相信这会有用。