0

同様のテキストの一部を .txt ファイルに (追加するのではなく) 上書きする方法を見つけようとしています。フォームを使用してさまざまなデータをphpスクリプトに送信し、このデータの要約を.txtファイルに書き込みます.txtファイルは別のhtmlスクリプト(データビューア)によって読み取られ、表示されます2 番目のユーザー インターフェイス。構成スクリプトによって同じデータ ID が .txt ファイルに書き込まれる場合がありますが、Data Viewer GUI は常にこのデータの最初のインスタンスを読み取るため、最新の更新を見逃します。2 つの GUI 間をハイパーリンクするときにテキスト ファイル全体をクリアしたくありませんが、.txt ファイル内のテキストを上書きする方法を説明している場所が見つからないようです。それらはすべて追加されているようです。 . 以下は、.txt ファイルのサンプルです。

Analogue Output Channels: AN1_OUT,10,0,0,AN3_OUT,45,0,0,0,0,0,0,0,0,0,0,
Analogue Output Channels: AN1_OUT,10,0,0,AN3_OUT,45,0,20,0,0,0,0,0,0,0,0,
Analogue Output Channels: 
AN1_OUT,10,AN2_OUT,0,AN3_OUT,45,AN4_OUT,20,AN5_OUT,0,AN6_OUT,0,AN7_OUT,0,AN8_OUT,0,
Analogue Output Channels:
AN1_OUT,0,AN2_OUT,10,AN3_OUT,45,AN4_OUT,20,AN5_OUT,12,AN6_OUT,15,AN7_OUT,23,AN8_OUT,17,
Analogue Output Channels: 
AN1_OUT,0,AN2_OUT,10,AN3_OUT,45,AN4_OUT,20,AN5_OUT,12,AN6_OUT,15,AN7_OUT,23,AN8_OUT,17,
Analogue Output Channels:
AN1_OUT,1,AN2_OUT,10,AN3_OUT,45,AN4_OUT,20,AN5_OUT,12,AN6_OUT,15,AN7_OUT,23,AN8_OUT,17,

書き込みは、php スクリプトではかなり基本的なものです。

$fp = fopen("Log.txt","a");
fwrite($fp, "Analogue Output Channels: ");
fwrite($fp, "$var5,");

変数の書き込みはループに配置されるため、上記は完全なコード リストではありません。アドバイスをいただければ幸いです。

4

2 に答える 2

0

出力の ID がどこにあるのかわかりませんが、たとえば、そのような txt ファイルがある場合:

ID1 Some text
ID2 Some text
ID3 Some text

そして、 string を上書きしたい場合はID2 Some text、次のコードを使用します。

$id = 'ID2';
$pattern = "/(?m)(^$id.*$)/";
$text = file_get_contents( 'Log.txt' );
$text = preg_replace( $pattern, $with_what_to_replace, $text );
file_put_contents( 'Log.txt' );

しかし、Dagon が言ったように、同じ ID の行を繰り返させたくない場合は、これには DataBase を使用することをお勧めします。txt ファイルへの書き込みは、情報が繰り返されるログに適しています。

于 2013-11-13T20:55:37.147 に答える
0

通話を変更する必要がありますfopen()。試す$fp = fopen("Log.txt","w");

'w' - 書き込み専用です。ファイルポインタをファイルの先頭に置き、ファイルの長さをゼロに切り詰めます。ファイルが存在しない場合は、作成してみてください。

ソース

于 2013-11-13T20:48:22.760 に答える