0

スクリプト タグ内のすべてのタグをコメント アウトする必要がある JavaScript 正規表現に問題があります。ただし、id "ignorescript" を持つ特別な最初のスクリプト タグをコメント アウトすることはできません。

正規表現のサンプル文字列は次のとおりです。

<script id="ignorescript">
    var test = '<script>test<\/script>;
    var xxxx = 'x';
</script>

ignorescipt 内のスクリプト タグには、(PHP から) JSON エンコードされているため、余分なバックスラッシュがあります。

そして、これが私が得なければならない最終結果です:

<script id="ignorescript">
    var test = '<!ignore-- <script>test<\/script> ignore-->;
    var xxxx = 'x';
</script>

次の例は動作します:

content = content.replace(/(<script>.*<\\\/script>)/g,
    "<!--ignore $1 ignore-->");

ただし、「ignorescript」というキーワードが含まれていないことを確認する必要があります。そのキーワードが出てきたら、何も置き換えたくありません。それ以外の場合は、script タグ全体に無視コメントを追加します。

content = content.replace(/(<script.((?!ignorescript).)*<\/script>)/g,
    "<!--ignore $1 ignore-->");

それはちょっとうまくいきますが、本来あるべき方法ではありません。また、終了タグにもう 1 つのバックスラッシュがあります。だから私はそれを次のように変更しました:

content = content.replace(/(<script.((?!ignorescript).)*<\\\/script>)/g,
    "<!--ignore $1 ignore-->");

まったく何も見つかりません。

4

1 に答える 1