【问题标题】:fwrite not creating newline despite using "\n"尽管使用了“\n”,但 fwrite 没有创建换行符
【发布时间】:2016-05-12 20:59:59
【问题描述】:

我是 php 新手,正在尝试了解 html 表单,但在换行时遇到了这个小问题。下面的代码应该通过 html 获取一个表名,然后将输入写入一个文本文件:

html

<form action="maketable.php" method="post" name="input[]">
        <fieldset>
            <legend>Table Info</legend>
            Enter Table Name:
            <br>
            <input type="text" name="input[]">
            <br>
            Enter Value A:
            <br>
            <input type="text" name="input[]">
            <br>
            Enter Value B:
            <br>
            <input type="text" name="input[]">
            <br>
            <input type="submit">
        </fieldset>
    </form>

php

$file = fopen("Tables.txt", "w+");
if(isset($_POST["input"])) { 
    $input = $_POST["input"];
    $table = $input[0];
    $A = $input[1];
    $B = $input[2];

    fwrite($file, $table . "\n");
    fwrite($file, $A . "\n");
    fwrite($file, $B);
} else {
    fwrite($file, "table not set");
}
fclose($file);

如果我输入表格“table”,“A”,“B”。文本文件显示

表AB

我想让这些变量之间有一个换行符,但是. "\n" 似乎没有工作。我做错了什么?

【问题讨论】:

  • 你如何检查这个?您是否使用记事本等 Windows 编辑器读取文件?或者也许在网络浏览器中显示它?
  • 我正在用记事本检查这个。只需在浏览器中查看它,就可以了。感谢您的快速响应
  • 如果要跨平台编写,请改用PHP_EOL。如果您使用\n,Windows 不会将其识别为换行符。 Windows 中的换行符是\r\n。马克的评论在这里非常相关。
  • 我预计会反过来,浏览器期待 html 并忽略换行符。
  • 这里也一样,所以我没想通过浏览器看

标签: php forms post fwrite


【解决方案1】:

在末尾使用 '\r\n'(在 Windows 中)。 '\n' 最适合 Linux。

$line_break = '\r\n';

如果你替换它,性能会更快:

fwrite($file, $table . "\n");
fwrite($file, $A . "\n");
fwrite($file, $B);

到这里:

$line_break = '\r\n';
fwrite($file, $table . $line_break . $A . $line_break . $B . $line_break);

或者更快:

$line_break = '\r\n';

$write_ok = file_put_contents("Tables.txt", $table . $line_break . $A . $line_break . $B . $line_break);
if ( $write_ok < 4) { // error

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2015-05-24
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多