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)
我不确定用户做了什么,但有时它仍然回显 nn
或 n
而不是中断。
谢谢
*** 更新 **
我一直在寻找完全错误的地方来搞乱这些。
我发现启用了 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_
这似乎是一个重复的问题,但我从未找到一致的完整解决方案。其他帖子的答案似乎在短时间内有效,然后随机中断。我确定我犯了新手错误。
允许用户在 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)
我不确定用户做了什么,但有时它仍然回显 nn
或 n
而不是中断。
谢谢
*** 更新 ** 我一直在寻找完全错误的地方来搞乱这些。 我发现启用了 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_