解决方案可能很简单,但我无法弄清楚它为什么不起作用:
我使用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会以这种方式表现。
答案 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设置中更改此行为以获取魔术引号,但最好将其保留在那里以防止注入攻击。