4 回答

TA貢獻(xiàn)1911條經(jīng)驗 獲得超7個贊
您可以使用\n,PHP_EOL或如前所述,chr(10)為文本添加新行,但在我看來,\n當(dāng)與如下內(nèi)容一起使用時,使用可能是最簡單的:
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$filename = substr( str_shuffle( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ), 0, 6) . '.txt';
if ( !file_exists( $filename ) ) {
foreach( $_POST as $field => $value ){
/*
`sprintf` can be used to create a formatted string where
variables are substituted for certain placeholders.
the `FILE_APPEND` flag ensures the file is written to
several times with previous data retained.
*/
file_put_contents( $filename, sprintf( "%s: %s\n", $field, $value ), FILE_APPEND );
}
}
}
?>
免責(zé)聲明:
在 PHP 字符串中使用\n時始終確保它用雙引號引起來,例如:
echo "Some text with new line at the end \n";
如果您將其與單引號一起使用
echo 'Some text with new line at the end \n';
\n它將在最后輸出字符串。

TA貢獻(xiàn)1847條經(jīng)驗 獲得超7個贊
正如其他人所說,添加\n換行符是您所缺少的。阿布朗修斯教授通過將您的逐一寫入變成循環(huán),使您的生活變得更輕松。不要一一重復(fù)代碼,假設(shè)您打算保存所有$_POST提交的字段!
還有其他兩個簡單的選擇可供考慮。首先,保存為 JSON:
$data = json_encode($_POST, JSON_PRETTY_PRINT);
file_put_contents($filename, $data);
這將為您提供一個包含以下內(nèi)容的文件:
{
"rname": "Arr Name",
"fname": "Foo Name"
}
...您以后可以借助 輕松地重復(fù)使用這些數(shù)據(jù)json_decode()。
如果您確實不需要數(shù)組鍵,這是迄今為止最簡單的方法:
$data = implode("\n", $_POST);
file_put_contents($filename, $data);
無需循環(huán)它,或在單獨的調(diào)用中將每個字段寫入文件。(無論如何,您fopen只需要調(diào)用一次。這里我們只是使用file_put_contents。)此方法將為您提供一個包含以下內(nèi)容的文件:
Arr Name
Foo Name
如果您不想包含所有$_POST字段,可以使用以下方法過濾帖子數(shù)據(jù):
$allowed = ['rname', 'fname'];
$fields = array_intersect_keys($_POST, array_fill_keys($allowed, ''));
然后,您可以$fields像使用一樣使用$_POST,實現(xiàn)這些“批量保存”方法中最適合您的用例的方法。
注意:使用批量方法進(jìn)行用戶輸入提交。惡意用戶可能會調(diào)整表單/提交的數(shù)據(jù)并添加字段,從而將字段列入白名單 - 指定如上所述;或者可能通過從表單定義中提取它們,因為它們已經(jīng)在某處拼寫出來 - 如果您打算重新使用提交的數(shù)據(jù),建議這樣做。您可能還想驗證/清理實際內(nèi)容,但這是另一天的主題。
PS雖然我們通常添加\n換行符,但這是 Linux 和 MacOS 標(biāo)準(zhǔn)。Windows 使用\r\n,如果您在 Windows 上下文中執(zhí)行此操作,則可能需要使用本機行結(jié)尾。任何像樣的代碼編輯器,以及自 2018 年以來的記事本(參考),都可以使用其中任何一個,但較舊的軟件可能會起作用并將行融合在一起。
PPSPHP_EOL關(guān)于使用 來產(chǎn)生行結(jié)束的注釋。根據(jù)手冊,PHP_EOL (string): The correct 'End Of Line' symbol for this platform.即。\n或\r\n取決于您的操作系統(tǒng)。假設(shè)您在 Windows 上進(jìn)行開發(fā),但后來部署到 Linux 服務(wù)器,您最好只選擇一個 ( \n) 并堅持使用,以避免數(shù)據(jù)具有混合換行符標(biāo)準(zhǔn)。

TA貢獻(xiàn)1921條經(jīng)驗 獲得超9個贊
在 PHP 中,您可以使用PHP_EOL添加換行符。
<?php
$filename = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 6) . '.txt';
if ( !file_exists($filename) ) {
//File put contents stuff here
if(isset($_POST['fname']))
{
$data=$_POST['fname'];
$fp = fopen($filename, 'a');
fwrite($fp, $data);
}
if(isset($_POST['lname']))
{
$data=$_POST['lname'];
$fp = fopen($filename, 'a');
fwrite($fp, PHP_EOL . $data);
}
}
?>
- 4 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報