2011-07-11 31 views
2

我在我的网站上有WMD编辑器,并且我在数据库中存储了降价。但在发送数据库降价之前,我使用mysql_real_escape_string过滤它,如下所示:PHP净化降价 - html输出

$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 nnnnnnnnn为

回答

0

他们正在转换,不再作为换行符。要替换它们:

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

您还可能要做到这一点:

$markdown = html_entity_decode($markdown); 
+0

谢谢,但它显示了我在文本中的
(它是< br/>在源代码中)。 PHP Markdown以某种方式将
转换为我认为的html实体(因为当我删除了php markdown处理时,我得到了换行符)。 – apdpdpdpddc

+0

检查编辑,您可能要使用html_entity_decode – Eddie

+0

谢谢,它现在可以工作。 – apdpdpdpddc

0

你可能有一些坐在你的输入层上,并用反斜杠逃逸进入角色,这样当你使用mysql_real_escape_string你实际上获得了双重转义的内容。

如果你很不走运,那东西可能是magic_quotes_gpc在这种情况下,你应该尽快get rid of it,或者如果你真的不能那么work around it

+0

magic_quotes_are disabled。 – apdpdpdpddc