我想從文件的開頭刪除前面的23行,並用包含10行的字符串替換它們。用包含10行的字符串替換前23行的文件php
$newstring = "line1
2
3
4
5
6
7
8
9
10";
最簡單的方法是什麼?我一直在玩fwrite
,但我肯定做錯了什麼。
我想從文件的開頭刪除前面的23行,並用包含10行的字符串替換它們。用包含10行的字符串替換前23行的文件php
$newstring = "line1
2
3
4
5
6
7
8
9
10";
最簡單的方法是什麼?我一直在玩fwrite
,但我肯定做錯了什麼。
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;
}
謝謝,但我想寫給我正在閱讀的文件 - 你能file_put_contents到你正在閱讀的文件? – John 2012-08-11 15:18:24
是的。你從中讀取。然後你寫信給它 - 這是2個獨立的操作。你不是在同一時間閱讀和寫作。 – HappyTimeGopher 2012-08-11 15:20:07
@John根據你的評論進行編輯。 – HappyTimeGopher 2012-08-11 15:23:25
[你嘗試過什麼?](http://whathaveyoutried.com) – Don 2012-08-11 15:12:54
http://stackoverflow.com/questions/215896/how-to-use-php-to-delete-x-number從最開始的文本文件 – Stony 2012-08-11 15:14:15
我試過的最後一件事是用preg_replace刪除空行,然後用10行文本和13行空行寫入$ txtw = fopen('txt .TXT」, 'R'); fwrite($ txtw,$ newstring); fclose($ txtw); – John 2012-08-11 15:14:56