php fwrite 追加不工作
php fwrite append not working
您好,我正在尝试制作一个基于 HTML post 和基本 PHP.
的脚本
我在 HTML 上有 1 个输入,我有这个 PHP 代码:
<?php echo'h'?>
我的一个朋友说,如果我将 w 更改为 an,它会创建一个新行,所以我更改了它,但它仍然不起作用。
基本上我想做的是,当他们在文本框中输入任何单词时,它会将该单词写入文本文档,但第二次它不会创建新行,我只想创建换行。
这是我的完整代码:
<?PHP
$file_handle = fopen("sample.txt", "r");
$file_contents = $_POST['f1'];
fwrite($file_handle, $file_contents);
fclose($file_handle);
print "file created and written to";
?>
我假设您想将已发布的行添加到以前存储的文件中?在这种情况下,您的代码将如下所示:
$file_handle = fopen("sample.txt", "a"); // append to previous contents
$file_contents = $_POST['f1'] . "\r\n";
fwrite($file_handle, $file_contents);
fclose($file_handle);
print "Content has been appended.";
有关不同 fopen()
模式的更多信息,请参见 in the documentation, chapter "modes" and more about escape sequences (like \r\n
) can be found in the Strings chapter。
还有其他看似更简单的函数,其名称为:file_put_contents()
和 file_get_contents()
,它们(在您的情况下)可用于使事情更容易处理。下面的代码显示了 file_put_contents()
的用法,它是 kin: file_get_contents()
来完成任务。
<?php
$fileName = "sample.txt";
// GET THE TEXT TYPED-IN BY THE USER...
// ONLY YOU KNOW THE WAY TO GET THIS VALUE BUT WE CAN ASSUME (FOR NOW)
// THAT IT IS COMING FROM THE POST VARIABLE AND HAS THE NAME: input
$input = isset($_POST['input']) ? $_POST['input'] : null;
// FIRST TRY TO SEE IF THE FILE EXIST, OTHERWISE CREATE IT
// HOWEVER; WITH JUST AN EMPTY CONTENT
if(!file_exists($fileName)){
file_put_contents($fileName, "");
}
// DO THE SAVING ONLY IF WE HAVE ANY INPUT (STRING) TO SAVE
if($input){
// GET THE CURRENT CONTENTS OF THE FILE...
$fileContent = file_get_contents($fileName);
// ADD THE INPUT TO THE CURRENT CONTENTS OF THE FILE (WITH A NEW LINE)
$fileContent .= "\n{$input}";
// SAVE THE MODIFIED CONTENT BACK AGAIN...
$bytesSaved = file_put_contents($fileName, $fileContent);
// IF THE FILE WAS SUCCESSFULLY WRITTEN... THEN...
// DISPLAY A MESSAGE TO THAT EFFECT
if($bytesSaved){
print "file created and written";
}
}
您好,我正在尝试制作一个基于 HTML post 和基本 PHP.
的脚本我在 HTML 上有 1 个输入,我有这个 PHP 代码:
<?php echo'h'?>
我的一个朋友说,如果我将 w 更改为 an,它会创建一个新行,所以我更改了它,但它仍然不起作用。
基本上我想做的是,当他们在文本框中输入任何单词时,它会将该单词写入文本文档,但第二次它不会创建新行,我只想创建换行。
这是我的完整代码:
<?PHP
$file_handle = fopen("sample.txt", "r");
$file_contents = $_POST['f1'];
fwrite($file_handle, $file_contents);
fclose($file_handle);
print "file created and written to";
?>
我假设您想将已发布的行添加到以前存储的文件中?在这种情况下,您的代码将如下所示:
$file_handle = fopen("sample.txt", "a"); // append to previous contents
$file_contents = $_POST['f1'] . "\r\n";
fwrite($file_handle, $file_contents);
fclose($file_handle);
print "Content has been appended.";
有关不同 fopen()
模式的更多信息,请参见 in the documentation, chapter "modes" and more about escape sequences (like \r\n
) can be found in the Strings chapter。
还有其他看似更简单的函数,其名称为:file_put_contents()
和 file_get_contents()
,它们(在您的情况下)可用于使事情更容易处理。下面的代码显示了 file_put_contents()
的用法,它是 kin: file_get_contents()
来完成任务。
<?php
$fileName = "sample.txt";
// GET THE TEXT TYPED-IN BY THE USER...
// ONLY YOU KNOW THE WAY TO GET THIS VALUE BUT WE CAN ASSUME (FOR NOW)
// THAT IT IS COMING FROM THE POST VARIABLE AND HAS THE NAME: input
$input = isset($_POST['input']) ? $_POST['input'] : null;
// FIRST TRY TO SEE IF THE FILE EXIST, OTHERWISE CREATE IT
// HOWEVER; WITH JUST AN EMPTY CONTENT
if(!file_exists($fileName)){
file_put_contents($fileName, "");
}
// DO THE SAVING ONLY IF WE HAVE ANY INPUT (STRING) TO SAVE
if($input){
// GET THE CURRENT CONTENTS OF THE FILE...
$fileContent = file_get_contents($fileName);
// ADD THE INPUT TO THE CURRENT CONTENTS OF THE FILE (WITH A NEW LINE)
$fileContent .= "\n{$input}";
// SAVE THE MODIFIED CONTENT BACK AGAIN...
$bytesSaved = file_put_contents($fileName, $fileContent);
// IF THE FILE WAS SUCCESSFULLY WRITTEN... THEN...
// DISPLAY A MESSAGE TO THAT EFFECT
if($bytesSaved){
print "file created and written";
}
}