2011-03-13 110 views
1

我已经构建了一个简单的网站,允许用户共享将代码作为HTML保存在数据库中的代码。例如将HTML显示为代码

<!DOCTYPE html> 
      <html lang="en"> 
       <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
        <meta name="viewport" content="width=1024"> 
        <title></title> 
       </head> 

       <body id="" class=""> 


</body> 
</html> 

我正显示出它在网站上给别人看的,当我换什么数据库里面<code><pre></pre></code>吐出它仍然呈现HTML并没有把它当作代码显示的问题。我已经读过,你必须使用&gt;来解决这个问题,但这是不可行的,因为用户将共享原始代码,并且不能开始将代码转换为像这样的html实体!我该如何解决?谢谢。

这里是代码的形式插入到数据库这样的:http://pastebin.com/i3pn2AjT

,这是我目前显示出来: <div class="code"> <pre> <?php echo get_post_meta($posts_post_id, 'post_code', true); ?> </pre> </div>

+2

当你插入到数据库中时,你是否会转义HTML字符? – 2011-03-13 18:47:08

+1

不。我如何使用PHP来做到这一点?我将添加我正在使用的表单将其插入到原始文章中的数据库中。 – Cameron 2011-03-13 18:50:58

+1

请参阅下面的@ AndrewMoore的回答:) – 2011-03-13 18:53:29

回答

7

你需要逃避的显示时间或HTML代码,通过在插入时间。

从你以前的问题看来,你似乎在使用PHP。你可以通过htmlentities()来实现。

例如:

<code><?php echo htmlentities($userSuppliedHTML, ENT_QUOTES, 'UTF-8'); ?></code> 
+0

如何使用htmlentities与正在回显的get_post_meta函数? – Cameron 2011-03-13 18:53:32

+0

@Cameron:改为在插入时间转义。 '$ post_code = htmlentities($ _ POST ['post_code'],ENT_QUOTES,'UTF-8');'。我不知道WordPress,我相信这不是一个好主意,摆弄他们的功能。 – 2011-03-13 18:57:16