2016-05-13 9 views
1

私はJS文字列を持っていますので、私のウェブサイトのメッセージ入力にhtmlとjsの挿入を防止したいと思います。このような顔文字を表示するために使用されているので、私は、imgタグを除く文字列からすべてのHTMLタグを削除するにはどうすればよい<img>または<img/>のタグを除いたすべてのhtmlタグを削除します。

<img class="emo" src="images/emo/smile.png"> 

私はそれだけですべてのHTMLタグを削除するには、次のコードを使用したが、いimgタグではなく<br>タグで動作します。

function remove_tags(html) 
{ 
    var html = html.replace("<img>","||img||"); 
    var tmp = document.createElement("DIV"); 
    tmp.innerHTML = html; 
    html = tmp.textContent||tmp.innerText; 
    return html.replace("||img||","<img>"); 
} 

いずれかのこれらのHTMLタグを削除するか、または単にのような単純なテキストとして表示: <script> alert("hi");</script>

しかし<img>タグを除いて。

あなたはjQueryのを使用して、このように行うことができ
+0

javascriptの –

+1

悪いニュースで正規表現のためにGoogleで検索してください:あなたは、静止画像タグでスクリプトを注入することができます! – Scott

答えて

0

function remove_tags(html) 
{ 
    var html = html.replace("<img>","||img||"); 
    var text = jQuery(html).text(); 
    return text.replace("||img||","<img>"); 
} 

参考:Strip HTML from Text JavaScript

+0

ここで 'jQuery'を実行すると実際に' html'の内容が実行されることに注意してください! ' ' – Scott

+0

で試してみました。これは私にとってはうまくいきません。何も印刷しません。プレーンテキストでさえない。 – Faizan

1

あなたはこの単純なコードを使用することができます

var html = '<img class="emo" src="images/emo/smile.png">'; 
var text = html.replace(/<.*?>/g, ""); 

replace方法は、文字列内のすべてのHTMLタグを削除します。

下のデモですべてのHTML文字列をテストできます。

$("button").click(function(){ 
 
    var html = $("textarea").val(); 
 
    var text = html.replace(/<.*?>/g, ""); 
 
    $("textarea").val(text); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea><img src=x onerror=alert("Test") /><p>aa</p></textarea> 
 
<br /> 
 
<button>Remove HTML tags</button>

関連する問題