我正在尝试找到一种将类似文本的部分覆盖(而不是附加)到.txt文件的方法。我有一个html用户界面(Config),它使用一个表单将各种数据位提交给php脚本,然后将该数据的摘要写入.txt文件,该文件由另一个html脚本(数据查看器)读取并显示在第二个用户界面。 有时会通过Config脚本将相同的数据ID写入.txt文件,但是,Data Viewer 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,");
变量的写入放在一个循环中,因此上面不是完整的代码清单。 任何建议将不胜感激。
答案 0 :(得分:0)
您需要更改fopen()
来电。试试$fp = fopen("Log.txt","w");
'w' - 仅供写作;将文件指针放在文件的开头,并将文件截断为零长度。如果该文件不存在,请尝试创建它。
(source)
答案 1 :(得分:0)
我不明白输出中的ID在哪里,但是例如,如果你有这样的txt文件:
ID1 Some text
ID2 Some text
ID3 Some text
然后你想要过度编写字符串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所说,最好使用DataBase,如果你不想重复使用相同ID的行。写入txt文件有利于记录,信息可以重复。