0

リッチテキストコンテンツの文字列があります

たとえば、このようなもの

<p>Hello</p>

<br/>

<p> Christian </p>

<pre> Don't Know what to do </pre>

今、私はスクリプトが上記のコンテンツに存在することを望んでおらず、存在する場合はそれを回避したい

このようなコンテンツがある場合

<p>Hello</p>

<br/>

<p> Christian </p>
<script type="text/javascript"> alert("Hello")</script>
<pre> Don't Know what to do </pre>

と交換する必要があります

<p>Hello</p>

<br/>

<p> Christian </p>
&lt;script type="text/javascript"&gt; alert("Hello")&lt;/script&gt;
<pre> Don't Know what to do </pre>

現在、そのための正規表現を開発しています

私のコードは次のようになります

if content.match(/<script(.+?)>/) {
  content = content.replace(content.match(/<script(.+?)>/)[0],content.match(/<script(.+?)>/)[0].replace("<","&lt;").replace(">","&gt;"))
}
if content.match(/<\script\s*>/)
 {
content = content.replace(content.match(/<\/script\s*>/)[0],content.match(/<\/script\s*>/)[0].replace("<","&lt;").replace(">","&gt;"))
}

結果のコンテンツにはscriptタグがエスケープされます

これを達成するためのよりクリーンな方法を誰かが提案できますか?

4

3 に答える 3

1

クリーナー:

content = content.replace(/<(script[^>]*|\/script)>/g, '&lt;$1&gt;');

ただし、これはおそらくこれを行う方法ではありません<script>そもそもこれらのタグが JS 文字列にあるのはなぜですか?

于 2012-02-28T09:37:30.507 に答える
0

これらの文字はサーバー側でエスケープする必要があると思います。たとえば、PHP ではhtmlentitiesを使用します

于 2012-02-28T09:35:59.503 に答える
0

あなたが探している答えではありませんが、javascript が無効になっているとどうなりますか? エスケープされていないコンテンツをページに表示するつもりですか。うまくいけば

PHPエスケープは、ASP.NETなどのサーバー側スクリプトを使用して行う必要があります。

PHP の場合と同様に、htmlentities()[ドキュメントはこちら] で十分です

$escaped = htmlentities($content)
于 2012-02-28T09:34:13.463 に答える