【问题标题】:Can't figure out why "\n" is not removed无法弄清楚为什么“\n”没有被删除
【发布时间】:2012-12-21 11:30:30
【问题描述】:

解决方案可能很简单,但我不知道为什么它不起作用:

我使用jQuery的Form插件提交一个,然后运行它:

str_replace(array("\r", "\n\t"), "", $_POST['mytext'])

查看 HTTP 标头,“\n”没有添加到任何地方。但是,当我从 PHP 打印 $_POST['mytext'] 时(仅用于测试目的),Firebug 到处显示“\n”:

<html>\n  <head>\n      <title></title>\n   </head>\n <body>\n      <h3>\n            We are.....

有趣的是,如果我选择此输出,手动将其分配给一个 var,然后对其运行 str_replace,所有 \n 字符都会消失。为什么不使用 $_POST 变量?

请帮忙。为看似微不足道的任务而发疯。

附:我确实有一个 .htaccess 重写规则,但怀疑它会弄乱任何东西:

RewriteRule ^/update_text/? my.php?action=update_text [QSA]

需要 QSA 从我的 JS 传输其他 $_GET 数据。


问题“已解决”。我用 $_REQUEST 替换了 $_POST ,现在一切都很花哨。仍然不明白为什么 $_POST 会这样。

【问题讨论】:

  • 我不明白这个问题。在 PHP 中,您将 \r 替换为 \n 和制表符 (\t)。然后在输出的文本中,您会看到 \n 后跟一个制表符。这不正是您要求代码执行的操作吗?如果您在标头中没有看到 \n(我假设您指的是发送到服务器的数据),那么您发送的数据中可能只有 \r 字符,而没有 \n?
  • 哦等等,我看错了代码...
  • 记住 - \n 对 HTML 没有任何意义。要在您想要 <br /> 的页面中正确显示。
  • @Marc,我知道。我只想删除所有换行符,但由于某种原因它在这种特殊情况下不起作用。
  • 我们可以看看你代码的jQuery部分吗

标签: php jquery


【解决方案1】:

您没有替换“\n”,您可能遇到了“\r\n”问题

// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
    str_replace($order, "", $str);

【讨论】:

  • @MarkL 当你回显 str_replace 的结果时会发生什么,是否有新的行它 l
  • 是的,我唯一的建议是将 str_replace 数据分配给一个值或 echo 它。在上面的代码示例中不是很清楚。
  • 试过了,但还是不行。 'echo str_replace(array("\r\n", "\n", "\r"), "", $_POST['text'])' 显示 \n。即使我将它插入 MySQL,换行符也会出现在那里。
【解决方案2】:

您是否尝试过使用 PHP 行尾常量? PHP_EOL

【讨论】:

  • 是的,不行。还尝试了 preg_replace ("%\n%") 但没有运气。
【解决方案3】:

我认为 php 会自动转义发布的数据 - 所以要让它不转义,请使用 stripslashes($_POST['mytext'])。可以在 php.ini 设置中更改魔术引号的这种行为,但最好将其保留在此处,以防止注入攻击。

【讨论】:

  • magic_quotes 的安全性很差,无法防止 [sql] 注入。这就是它从 5.3.0 (php.net/magic_quotes) 开始贬值的原因。原因,是因为不同的项目需要以不同的方式进行转义。所有magic_quotes 所做的只是逃避它们addslashes afaik,它没有涵盖所有不同数据库等的所有不同漏洞利用。-1 表示有关安全性的错误信息(抱歉)并建议使用折旧设置。最好关闭magic_quotes并使用数据库提供的适当工具或应用程序需要处理转义。
  • 我试过了,但结果我得到了很多“n”个字符。
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多