web-dev-qa-db-ja.com

HTML TEXTAREAがHTMLエンティティをデコードしないようにする方法

私は奇妙な問題を抱えています:

データベースには、リテラルのアンパサンドltセミコロンがあります。

<div  

hTMLのtextareaタグに出力されると、ページのソースコードに> なので >

このデコードを停止するにはどうすればよいですか?

21
Rami Dabain

別のページからDBコンテンツを提供し、Javascript(jQuery)Ajax-callを使用してそれをテキストエリアに配置できます。

request = $.ajax
({  
    type: "GET",
    url: "url-with-the-troubled-content.php",           
    success: function(data)
    {
        document.getElementById('id-of-text-area').value = data;    
    }
}); 

で説明

http://www.endtask.net/how-to-prevent-a-textarea-element-from-decoding-html-entities/

1
Victor

私は同じ問題を抱えていて、テキスト領域に入れる前に、データベースから表示するためにテキストを2つ置き換えました。

myString = Replace(myString, "&", "&")
myString = Replace(myString, "<", "&lt;")

N:o 1を置き換えて、textareaをだましてコードを表示します。 n:o 2を置き換える:この置き換えがないと、textarea内に「」という単語を表示できません(textareaタグが終了します)。

(上記のASP/VBScriptコード、選択した言語の置換メソッドに変換)

1
Andreas Jansson

これがブラウザに表示されることを確認する必要があります:

<textarea name="somename">&amp;lt;div</textarea>

基本的に、これは&&lt;&amp;にHTMLエンコードする必要があることを意味します。その方法は、使用しているテクノロジーによって異なります。

[〜#〜] update [〜#〜]:このように考えてください。 display<div>をテキストエリア内にしたい場合は、<>をエンコードする必要があります。それ以外の場合は<div>は、ブラウザに対する通常のHTML要素です。

<textarea name="somename">&lt;div&gt;</textarea>

これを言っても、display&lt;div&gt;をtextarea内にしたい場合は、&を再度エンコードする必要があります。ブラウザは、HTMLをレンダリングするときにHTMLエンティティをデコードします。データベースとは何の関係もありません。

1
Lukas Eder

ブラウザーでの読み取りと操作の代替ソリューションを見つけました。jQueryを使用して要素のtext()を読み取るだけで、表示文字として文字が返され、html()を介してプロパティを使用してtextareaからdivのinnerHTMLに書き込むことができます...