2008-10-24 123 views
0

如果因爲我希望它顯示爲html中的實際代碼(例如,對於示例代碼片段)而轉義某些代碼,請將其保存到數據庫,然後將其拉回到編輯器中一個html頁面),它顯示爲html,而不是轉義的文本。編輯轉義碼(用於顯示)

當我在文本中包含textarea標記時,會出現問題,因爲它會過早關閉編輯區域,並在保存時編寫剩餘的內容(或者如果我不關閉標記,則會更多)。

所以我的問題是:這是瀏覽器部分的預期行爲? - >所以我需要逃避文本(代碼和預標籤也許)?每次我想對其進行更改?或者我做錯了什麼?

*注意我是唯一一個使用它的人,它主要是爲了學習,所以我不擔心安全方面的問題,因爲我需要在瀏覽器中使用它來處理我的html,它有一個預期的行爲方式。

回答

1

@Bob:htmlentities()是不一樣的htmlspecialchars()

ヶ輛()將每件有ASCII碼代碼字符轉換。 用htmlspecialchars()只會做那些在HTML特殊,如&,報價和<或>

這是可以打破一些東西,使用時也可能導致的結果是巨大的相當大的區別ヶ輛()。

1

以我的經驗,你確實需要做某種特殊字符轉義。在PHP中,函數是htmlspecialchars()。我不知道其他功能。但瀏覽器會正確顯示textarea中的編碼字符。

0

大多數基於Web的語言都具有用於轉義HTML解釋字符的某些庫函數,因此請檢查您正在使用的語言的文檔。

和Darryl一樣,html_entities()(它是htmlspecialchars()的別名)將在PHP中實現。

0

這是瀏覽器部分的預期行爲嗎? 是的,瀏覽器將您的(非轉義的)HTML代碼解釋爲屬於該頁面的HTML標籤並對其執行操作。

所以我需要逃避文本(代碼和預標籤也許)? 是的,正如Darryl Hein所說,使用htmlspecialchars()。它們將被瀏覽器正確顯示,並且在編輯時不需要「隱藏」數據。

...我做錯了什麼? 您應該檢查傳入應用程序或離開它的任何輸入,看看它中是否有任何字符對瀏覽器,數據庫服務器和解決方案的其他部分有特殊意義。您應該爲每次交互正確地轉義特殊字符(例如,用於MySQL數據庫的mysql_escape_string(),用於HTML的htmlspecialchars()等)