2013-05-16 26 views
5

私はここが新しいです。
とにかく、私はfwrite()について研究しましたが、解決策が見つからないので、私は助けを求めています。 私が欲しいのはf.eです。他の特定の行の後に新しい行の行を追加します。 F.e.私はそこである.txtファイルがあります。今、私がやりたいものをPHP fwrite()特定の行の後に新しい行を挿入する方法

//Users 

//Other stuff 

//Other stuff2 

を「その他の項目」を触れることなく、//ユーザーの下に新しいユーザーを追加することができ、および「その他のスタッフ2」であります。だから、次のようになります。

//Users  
Aneszej 
Test321 
Test123 

//Other stuff 

//Other stuff2 

私がこれまで持っているもの:

$config = 'test.txt'; 
$file=fopen($config,"r+") or exit("Unable to open file!"); 

$date = date("F j, Y"); 
$time = date("H:i:s"); 

$username = "user"; 
$password = "pass"; 
$email = "email"; 
$newuser = $username . " " . $password . " " . $email . " " . $date . " " . $time; 

while (!feof($file)) { 
    $line=fgets($file); 
    if (strpos($line, '//Users')!==false) { 
     $newline = PHP_EOL . $newuser; 
    } 

} 

fwrite($file, $newline); 

fclose($file); 

あるtest.txtファイル

//Users 

//Something Else 

//Something Else 2 

をしかし、これが唯一の最後にユーザーを書き込みます。 txtファイル。

ありがとうございました。それは解決されました。

+0

試すことができます – Hackerman

+0

ファイル操作が少し複雑になってきたら、データベースを使用する必要があります。 SQLiteを試してみてください。 –

+0

これは単なる例で、私はそれを他のものに使うつもりです。情報thoをありがとう。 – Aneszej

答えて

5

あなたのコードを変更しました。私はあなたが必要としていると思っています。また、コメントを入れて、新しいユーザーを追加し続けます。ユーザーが存在することを確認する条件を追加できます。

$config = 'test.txt'; 
$file=fopen($config,"r+") or exit("Unable to open file!"); 

$date = date("F j, Y"); 
$time = date("H:i:s"); 

$username = "user"; 
$password = "pass"; 
$email = "email"; 
$newuser = $username . " " . $password . " " . $email . " " . $date . " " . $time."\r\n"; // I added new line after new user 
$insertPos=0; // variable for saving //Users position 
while (!feof($file)) { 
    $line=fgets($file); 
    if (strpos($line, '//Users')!==false) { 
     $insertPos=ftell($file); // ftell will tell the position where the pointer moved, here is the new line after //Users. 
     $newline = $newuser; 
    } else { 
     $newline.=$line; // append existing data with new data of user 
    } 
} 

fseek($file,$insertPos); // move pointer to the file position where we saved above 
fwrite($file, $newline); 

fclose($file); 
+0

ありがとうございました。そして、それぞれが何をしているのかをコメントしてくれてありがとう。 – Aneszej

0

読み込みの最後に新しいコンテンツを書き込むので、ファイルの最後に書き込む必要があります。すべての行を読み終えたら、そこにカーソルがあります。

すべての内容をphp-variableに格納し、最後にファイルを上書きするか、Robert Rozasのコメントのようにfseekで巻き戻します。それはあなたが「Something else」行を読むとすぐに行われるべきです。

0

するTryのfseek:

<?php 
$file = fopen($filename, "c"); 
fseek($file, -3, SEEK_END); 
fwrite($file, "whatever you want to write"); 
fclose($file); 
?> 

PHPのドキュメント:あなたは '//ユーザのを見つけた後、あなたがbreakに必要http://php.net/manual/en/function.fseek.php

0

。あなたはファイルの最後まで読み続ける。

関連する問題