CDATA无法按预期工作

时间:2017-12-09 12:48:55

标签: php html cdata

我写了一个函数:



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

例如,我喜欢将其用作

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

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

&#13;
&#13;
myCellContent - <extra>
&#13;
&#13;
&#13;

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

修改:我有一个简单的解决方法:

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

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

1 个答案:

答案 0 :(得分:1)

CDATA sections是XML的一项功能。 HTML不支持它们。

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

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

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