【问题标题】:CDATA does not work as expectedCDATA 未按预期工作
【发布时间】:2017-12-09 12:48:54
【问题描述】:

我写了一个函数:

function wrapWithTag($tag, $data) {
  $cdata = "<![CDATA[$data]]>";
  echo "<$tag>$cdata</$tag>";
}

比如我喜欢把它当作

$name = 'myCellContent - <extra>';
wrapWithTag("td", $name);

预期的输出将是一个带有字符串的 html 表格单元格:

myCellContent - &lt;extra&gt;

它实际上是打印空单元格。如何正确使用 CDATA?

编辑:我有一个简单的解决方法:

function wrapWithTag($tag, $data) {
  $data = str_replace("<", "&lt;", $data);
  echo "<$tag>$data</$tag>";
}

但是,我更喜欢使用 CDATA 部分。随时发布解决方案:P

【问题讨论】:

    标签: php html cdata


    【解决方案1】:

    CDATA sections 是 XML 的一个特性。 HTML 不支持它们。

    XHTML 可以,但您必须确保浏览器以 XML 模式解析文档(通过在 HTTP 响应标头中设置 Content-Type: application/xhtml+xml)。

    在 HTML 中,如果要使用具有特殊含义的字符,则必须使用 &amp;lt; 等实体。

    PHP 有the htmlspecialchars function;没有必要用str_replace 自己动手。

    【讨论】:

      猜你喜欢
      • 2021-06-04
      • 2022-01-24
      • 2015-05-11
      • 2020-05-15
      • 2014-10-31
      • 2018-02-12
      • 2014-01-20
      • 2015-01-13
      • 2013-08-01
      相关资源
      最近更新 更多