Php 用包含10行的字符串替换文件的前23行

Php 用包含10行的字符串替换文件的前23行,php,file,replace,fwrite,Php,File,Replace,Fwrite,我想删除文件开头的前23行,并将其替换为包含10行的字符串,例如 $newstring = "line1 2 3 4 5 6 7 8 9 10"; 最简单的方法是什么?我一直在玩 f> ,但是我肯定做错了。我尝试的最后一件事是用PrggRead去掉空白行,然后用10个TXTW=fOpen[(txt.txt),'r')写在文本的13行和空白行中;fwrite($txtw,$newstring);fclose(txtw美元);23行还是23个字符从文件< /代码>的开始-文件类型的行-文件是.xm

我想删除文件开头的前23行,并将其替换为包含10行的字符串,例如

$newstring = "line1
2
3
4
5
6
7
8
9
10";

最简单的方法是什么?我一直在玩<代码> f> <代码>,但是我肯定做错了。

我尝试的最后一件事是用PrggRead去掉空白行,然后用10个TXTW=fOpen[(txt.txt),'r')写在文本的13行和空白行中;fwrite($txtw,$newstring);fclose(txtw美元);23行还是23个字符<代码>从文件< /代码>的开始-文件类型的行-文件是.xml,但它基本上是一个.txt文件。我尝试的最后一件事是用Primgl替换删除空白行,然后在10行文本和13条空白行中写入$txtw=fOpen[(txt.txt),'r');fwrite($txtw,$newstring);fclose(txtw美元);23行还是23个字符
从文件的开头开始
-哪种类型的文件?行-文件是.xml,但基本上是.txt文件谢谢,但我想写入我正在读取的同一个文件-你能将内容归档到你正在读取的文件中吗?是的。你从中阅读。然后你写它-它是两个独立的操作。您没有同时读写。@John根据您的评论进行了编辑。在我等待生成时为您包装了一个函数。@John现在解决了这两个问题:)谢谢,但我想写入我正在读取的同一个文件-您可以将内容归档到您正在读取的文件中吗?可以。你从中阅读。然后你写它-它是两个独立的操作。您没有同时阅读和写作。@John根据您的评论进行了编辑。在我等待生成时为您包装了一个函数。@John现在修复了这两个问题:)
replace_first_lines_in_file('path/to/file.txt', 23, $new_string);


function replace_first_lines_in_file( $file_path, $num_lines, $new_string )
{

    $file = file_get_contents($file_path);
    if( ! $file )
        return false;

    $pattern = '#^([^\n]*\n){' . $num_lines . '}#si';
    $new_file = preg_replace($pattern, $newstring, $file);

    if( ! file_put_contents($file_path, $new_file) )
        return false;

    return true;

}