【问题标题】:Writing to file inserts extra whitespace and slashes写入文件会插入额外的空格和斜杠
【发布时间】:2012-11-09 20:45:36
【问题描述】:

我有一个带有 textarea 表单的 html 页面,当用户输入该 textarea 并按下提交时,php 将该 textarea 的内容写入 txt 文件。

当我在 textarea 中插入这样的内容时

line1 what's up
line2
line3

它最终会这样写入 txt 文件

line1 what\'s up

line2

line3

带有额外的空格和额外的斜线。我怎样才能解决这个问题?这是php

$myFile = "all.txt";
$fh = fopen($myFile, 'a') or die("can't open file");

$stringData = $content."\n";
fwrite($fh, $stringData);
fclose($fh);

【问题讨论】:

  • 您使用什么文本编辑器查看文件?

标签: php html


【解决方案1】:

额外的换行符可能是由于写入文件的内容和读取文件的内容之间的行尾不同造成的。

也许你可以使用"\n" 来结束你的台词。

单引号的额外转义序列是魔术引号。

考虑这段代码:

<?php 

ini_set('magic_quotes_gpc', 'off');
$content = str_replace("\r\n", "\n");

您可以选择使用PHP_EOL 常量,该常量将匹配主机操作系统的行尾。

【讨论】:

  • 魔术引号不能通过ini_set设置。必须在 php.ini 文件中设置。
【解决方案2】:

如果您从文本框中检索数据,则数据实际上看起来像

line1 what's up\r\n
line2\r\n
line3

所以在末尾添加一个额外的\n 将添加一个额外的行。

至于\',这通常在启用magic_quotes 时发生。 在您的phpinfo() 中快速搜索“magic_quotes”将让您知道它是否已打开。

【讨论】:

  • 那么我该如何解决它,以便中间只有一行,而不是额外的一行?
  • 您是否尝试过使用trim($content) 或仅将“\r\n”替换为“\n”
【解决方案3】:

您已启用magic_quotes。禁用它,和/或升级到更新的 PHP。 magic_quotes 是魔鬼,而且更邪恶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多