0

PHP には、HTML と JavaScript を含むテンプレートがあります。

<script>
  if (a < b) {
    alert(a);
  } 
</script>
<div>
  hello
</div>

これはloadXMLメソッドでDOMDocument にフィードされます<が、スクリプト内の文字が原因でエラーが発生します。代わりにメソッドを使用できる可能性があることはわかっていますloadHTMLが、今のところ、scriptタグ内の < 文字を置き換えてから、後で再び文字に置き換える簡単な修正が必要です。<

問題は、文字を置き換える最良の方法は何ですか、ただしタグ<内のみですか?script

4

3 に答える 3

6

HTMLを変更できる場合、最善の解決策は、開始マーカーと終了マーカーを使用してJavaScriptコードをCDATAセクションでラップすること<![CDATA[です]]>。これにより、ドキュメントが有効なXMLになり、XMLパーサーで解析できるようになります。

<script>
// <![CDATA[

  if (a < b) {
    alert(a);
  } 

// ]]>
</script>
于 2012-10-13T14:40:40.517 に答える
1

XMLパーサーを使用している場合は、スクリプトにCDATAを使用してください。

于 2012-10-13T14:40:49.880 に答える
0

以下に、特定の XHTML コード内でスクリプトをエスケープする方法を示します。

このコード:

<?php

$code = <<<'CODE'
<script>
  if (a < b) {
    alert(a);
  } 
</script>
<div>
  hello
</div>
CODE;

echo preg_replace(
    '@(\<script(?:\s+[^>]*)?\>)([[:alnum:][:punct:][:space:]]+)(\</script\>)@',
    "\\1\n//<![CDATA[\n\\2\n//]]>\n\\3",
    $code);

これを生成します:

<script>
//<![CDATA[

  if (a < b) {
    alert(a);
  } 

//]]>
</script>
<div>
  hello
</div>
于 2012-10-13T18:42:11.183 に答える