这似乎是一个重复的问题,但我从来没有找到一致的完整解决方案。其他帖子的答案似乎在短时间内起作用然后随机打破。我确定我正在犯一个菜鸟错误。
允许用户在mysql中正确输入文本并正确回显换行符的最佳“完整”路径是什么。处理所有可能性,例如“返回键”,“输入键”,从任何单词或网站复制和粘贴,以及特殊字符,如á,',“。
当前设置:
MySQL行:type - text,colloation - utf8_unicode_ci
HTML:textarea
PHP提交:
$escaped = array_map('mysql_real_escape_string', $_POST);
$escaped = stripslashes($escaped);
PHP echo:
nl2br($textfield)
我不确定用户做了什么,但有时它仍会回显nn
或n
而不是休息。
由于
***更新** 我一直在寻找完全错误的地方弄乱这些。 我发现Magic Quotes已启用,导致断行和特殊字符出错。 谢谢大家的帮助。
答案 0 :(得分:0)
这会改善您的情况吗?
$escaped = array_map('mysql_real_escape_string', $_POST);
$escaped = nl2br($textfield)
//$escaped = stripslashes($escaped);
编辑: 为什么要删除斜线?
在剥离斜杠之前,您可以搜索并使用换行符。您还可以使用PHP_EOL
特殊字符进行探索,但我认为这与\n
或\r\n
对于其他阅读此内容的人,mysql_
已弃用 ,应替换为MySQLi_
答案 1 :(得分:-1)
您需要删除stripslashes($escaped)
。
它将\n
更改为n
,将\n\n
更改为nn
。