2

我的网站上有 WMD 编辑器,我将降价存储在数据库中。但在我将降价发送到数据库之前,我使用 mysql_real_escape_string 对其进行过滤,如下所示:

$to_database = mysql_real_escape_string($_POST['markdown']);

而且没关系。但现在我想展示它,所以我使用 PHP Markdown(将 Markdown 转换为 html)。但问题是它向我显示了\r\n\n而不是换行符。我尝试了 nl2br 功能,但没有帮助。即使我没有转义输出(不要将 markdown 转换为 html 并使用 htmlpurifier),我仍然会得到 \n 而不是换行符。只有当我删除 mysql_real_escape_string 它看起来不错。

bbbbbbbbbbb nnnnnnnn

4

2 回答 2

0

您可能在输入层上有一些东西,并用反斜杠转义传入的字符,因此当您使用时,mysql_real_escape_string您实际上得到的是双重转义的内容。

如果你很不走运,那件事可能是magic_quotes_gpc在这种情况下你应该尽快摆脱它,或者如果你真的不能解决

于 2011-07-11T21:46:15.963 回答
-1

它们正在被转换,不再充当换行符。你想替换它们:

$markdown = str_replace('\r\n','<br/>',$_POST['markdown']);
$markdown = str_replace('\n','<br/>',$markdown);

您可能还想这样做:

$markdown = html_entity_decode($markdown);
于 2011-07-11T21:38:34.703 回答