我写了一个函数:
function wrapWithTag($tag, $data) {
$cdata = "<![CDATA[$data]]>";
echo "<$tag>$cdata</$tag>";
}
&#13;
例如,我喜欢将其用作
$name = 'myCellContent - <extra>';
wrapWithTag("td", $name);
&#13;
预期输出将是一个带字符串的html表格单元格:
myCellContent - <extra>
&#13;
它实际上做的是打印空单元格。我该如何正确使用CDATA?
修改:我有一个简单的解决方法:
function wrapWithTag($tag, $data) {
$data = str_replace("<", "<", $data);
echo "<$tag>$data</$tag>";
}
&#13;
但是,我更喜欢使用CDATA部分。随意发布解决方案:P
答案 0 :(得分:1)
CDATA sections是XML的一项功能。 HTML不支持它们。
XHTML可以,但您必须确保浏览器以XML模式解析文档(通过在HTTP响应头中设置Content-Type: application/xhtml+xml
)。
在HTML中,如果要使用具有特殊含义的字符,则必须使用<
等实体。
PHP有the htmlspecialchars
function;没有必要使用str_replace
滚动自己。