2011-03-13 216 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