【发布时间】: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部分吗