如何使用MySQLI真正的转义字符串函数显示格式化字符串

时间:2015-03-29 19:22:45

标签: php html css mysqli sanitization

我有一个textarea,当用户输入类似的内容时,用户可以发布html代码并使用mysqli_real_escape_string()函数清理帖子..

===假设===

$post="
<html>

<body>

     <p> Some Paragraph </p>

</body>

</html>

";

当我清理这个是带有mysqli_real_escape_string()函数的$ post变量

$post=mysqli_real_escape_string($dblink,$post);
在显示该变量

时将该变量存储在数据库中
echo"<pre>".$post."</pre>";

这将显示

<html>\r\n\r\n<body>\r\n\r\n     <p> Some Paragraph
</p>\r\n\r\n</body>\r\n\r\n</html>      

请给我任何解决方案,以便我可以显示我的标记格式

1 个答案:

答案 0 :(得分:0)

是一个黑客,但可能是一个快速修复,直到你可以重构。使用$post函数换行str_replace,将“\ r \ n”替换为“\ n”:

echo"<pre>".str_replace('\r\n', "\n", $post)."</pre>";

重构建议:

Decoding mysql_real_escape_string() for outputting HTML

简而言之,使用PHP mysqli_* Prepared Statements来清理帖子,而不是mysqli_real_escape_string