无法弄清楚为什么“\ n”未被删除

时间:2011-03-22 16:13:05

标签: php jquery

解决方案可能很简单,但我无法弄清楚它为什么不起作用:

我使用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变量呢?

请帮忙。疯狂的看起来似乎是一项微不足道的任务。

P.S。我确实有.htaccess重写规则,但怀疑它与任何东西混淆:

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

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


问题“有点解决”。我用$ _REQUEST替换了$ _POST,现在它都是花花公子。仍然不明白为什么$ _POST会以这种方式表现。

3 个答案:

答案 0 :(得分:2)

你没有替换“\ 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);

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

我认为php会自动转发已发布的数据 - 所以要使用striplashes($ _ POST ['mytext'])取消转义。可以在php.ini设置中更改此行为以获取魔术引号,但最好将其保留在那里以防止注入攻击。