0

在 PHP 中,我有一个包含 HTML 和 javascript 的模板:

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

使用该方法将其输入到 DOMDocument 中,但是由于脚本中的字符loadXML,这会产生错误。<我知道我可以改用该loadHTML方法,但现在我只需要一个快速修复来替换script标签内的 < 字符,然后再用<

所以问题是,替换<字符的最佳方法是什么,但只能在script标签内?

4

3 回答 3

6

如果您可以修改 HTML,最好的解决方案是使用<![CDATA[]]>开始和结束标记用 CDATA 部分包装您的 JavaScript 代码。这将使文档成为有效的 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 回答