0

我正在尝试找到一种将类似文本的部分覆盖(而不是附加)到 .txt 文件的方法。我有一个 html 用户界面(配置),它使用表单将各种数据位提交到 php 脚本,然后将此数据的摘要写入 .txt 文件,该文件由另一个 html 脚本(数据查看器)读取并显示在第二个用户界面。有时,配置脚本会将相同的数据 ID 写入 .txt 文件,但是,数据查看器 GUI 始终会读取此数据的第一个实例,因此会错过最新的更新。如果我能提供帮助,当我在两个 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

你需要改变你的fopen()电话。尝试$fp = fopen("Log.txt","w");

'w' - 只为写入而打开;将文件指针放在文件的开头并将文件截断为零长度。如果该文件不存在,请尝试创建它。

来源

于 2013-11-13T20:48:22.760 回答
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 回答