2017-11-03 11 views
1

私は、次の内容で(some.txt)をTXTファイルしている想像してみて:PHP:ファイルの特定の行の間にコンテンツを挿入しますか?

:現在、私はこれを持って

data of first line 
data of next line 
#start-marker 

data of next line 
#end-marker 
data of next line 

そして、私はちょうど#開始マーカー

後にいくつかの行を書きたいです

$fp = fopen('some.txt','r+'); 
$insertPos=0; 
while (!feof($fp)) { 
    $line=fgets($fp); 
    if (strpos($line, '#start-marker')!==false) { 
     $insertPos=ftell($fp); 
} 
fseek($fp,$insertPos); 
fwrite($fp,'Data to be written'); 
fclose($fp); 

しかし、問題がある:

data of first line 
data of next line 
#start-marker 
Data to be written 

すべての行はジ新しい挿入線の後にサファイア。

これを行う方法?

予想される出力:

data of first line 
data of next line 
#start-marker 

Data to be written 
data of next line 
#end-marker 
data of next line 
+0

PARAMETER-モードは今、https://stackoverflow.com/a/6472446/689579 – Sean

答えて

0
$myfile = file_get_contents('some.txt'); 
$insert = '#start-marker blah blah blah new data here'; 
$myfile = str_replace('#start-marker', $insert, $myfile, 1); 
file_put_contents('some.txt', $myfile); 
0

私はあなたがファイルに追加を探していると思います。あなたのコードにモードa+を追加するには 'r +' から てみ変更:

$fp = fopen('some.txt','a+'); 
$insertPos=0; 
while (!feof($fp)) { 
    $line=fgets($fp); 
    if (strpos($line, '#start-marker')!==false) { 
     $insertPos=ftell($fp); 
} 
fseek($fp,$insertPos); 
fwrite($fp,'Data to be written'); 
fclose($fp); 

参考:http://php.net/manual/en/function.fopen.php

+0

同じ出力を参照してください。 –

+0

はまだデータを上書きしますか? –

+0

編集:+ +を使用して –

関連する問題