正确显示代码片段没有转义字符

时间:2011-06-29 18:52:20

标签: php mysqli code-snippets html-entities

我有一个存储我的代码片段的PHP脚本。 要插入,我使用:

$snippet_code = mysqli_real_escape_string($conn,trim($_POST['snippet_code']));

要显示,我使用包含在预标签中的以下内容:

$snippet_code = htmlentities($row['SnippetText']);

我注意到,当页面上显示代码片段时,有时会收到很多转义字符,例如\\\\。转义符出现在代码中出现单引号或双引号的任何位置。在非英语浏览器中,问题似乎更严重。

我该如何正确地做到这一点?如何在页面上正确存储和显示代码?

3 个答案:

答案 0 :(得分:1)

假设您的意思是像\"这样的斜杠转义序列,而不是像&这样的HTML转义序列,请试试这个:

$snippet_code = htmlentities(stripslashes($row['SnippetText']));

如果它实际上是HTML转义导致您遇到麻烦,只需省略htmlentities电话。

答案 1 :(得分:1)

如果您将'转换为\',则您的服务器可能配置了名为Magic Quotes的旧版选项。你can read about it in the PHP manual。如果可能,我的建议是disable them

另外,检查您的数据库。您当前的数据可能已损坏。如果是这样,您可以编写一个小脚本,使用stripslashes()来修复它。

答案 2 :(得分:0)

从您的评论中,您似乎 实际上是在谈论在引号之前找到的斜杠。

从您提供给我们的有限信息中不清楚为什么非英语浏览器会显示更多这些信息。

但是, 可能首先不应出现这些斜杠。也许你正在运行mysql_real_escape_string几次,而不只是一次......但是,再一次,你向我们展示的任何内容都没有表明这一点。

无论哪种方式,您都应该修复数据库中的数据,只是解决显示的问题。