スクリプト タグ内のすべてのタグをコメント アウトする必要がある 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-->");
まったく何も見つかりません。