2012-08-11 35 views
1

我想從文件的開頭刪除前面的23行,並用包含10行的字符串替換它們。用包含10行的字符串替換前23行的文件php

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

最簡單的方法是什麼?我一直在玩fwrite,但我肯定做錯了什麼。

+0

[你嘗試過什麼?](http://whathaveyoutried.com) – Don 2012-08-11 15:12:54

+0

http://stackoverflow.com/questions/215896/how-to-use-php-to-delete-x-number從最開始的文本文件 – Stony 2012-08-11 15:14:15

+0

我試過的最後一件事是用preg_replace刪除空行​​,然後用10行文本和13行空行寫入$ txtw = fopen('txt .TXT」, 'R'); fwrite($ txtw,$ newstring); fclose($ txtw); – John 2012-08-11 15:14:56

回答

1
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; 

} 
+0

謝謝,但我想寫給我正在閱讀的文件 - 你能file_put_contents到你正在閱讀的文件? – John 2012-08-11 15:18:24

+1

是的。你從中讀取。然後你寫信給它 - 這是2個獨立的操作。你不是在同一時間閱讀和寫作。 – HappyTimeGopher 2012-08-11 15:20:07

+0

@John根據你的評論進行編輯。 – HappyTimeGopher 2012-08-11 15:23:25

相關問題