mysql 中的换行符的正确方法?

line breaks in mysql the correct way?

这似乎是一个重复的问题,但我从未找到一致的完整解决方案。其他帖子的答案似乎在短时间内有效,然后随机中断。我确定我犯了新手错误。

允许用户在 mysql 中输入文本并正确回显换行符的最佳 'complete' 路径是什么。处理所有可能性,例如 'return key'、'enter key'、从单词或网站复制和粘贴,以及特殊字符,如 á、'、".

当前设置:

MySQL 行:类型 - 文本,搭配 - utf8_unicode_ci

HTML: 文本区域

PHP 提交:

$escaped = array_map('mysql_real_escape_string', $_POST); 
$escaped = stripslashes($escaped);

PHP回声:

nl2br($textfield)

我不确定用户做了什么,但有时它仍然回显 nnn 而不是中断。

谢谢

*** 更新 ** 我一直在寻找完全错误的地方来搞乱这些。 我发现启用了 Magic Quotes 会导致换行符和特殊字符出现错误。 谢谢大家的帮助。

您需要删除您的 stripslashes($escaped)。 它将 \n 更改为 n,将 \n\n 更改为 nn

这是否改善了您的情况:

$escaped = array_map('mysql_real_escape_string', $_POST); 
$escaped = nl2br($textfield)
//$escaped = stripslashes($escaped);

编辑: 为什么要去掉斜杠?

在删除斜杠之前搜索并使用换行符。您也可以探索使用 PHP_EOL 特殊字符,但我 认为 这与 \n\r\n

相同

对于阅读本文的任何其他人,mysql_ 弃用 ,应替换为 MySQLi_