正如标题所示 - 我有一种情况,我正在迭代一系列解码的html(尝试使用htmlspecialcharacters_decode()和html_entities_decode)。但是,解码后的字符串被DOM视为textNode。 php 5.3.28
示例:
<div>
<h1>This is in the middle of a template file</h1>
<?php
foreach ($assocArrayObjEle as $obyKey => $obyMeat) {
if (!is_null($obyMeat->description) && strlen($obyMeat->description)> 0)
{
print html_entity_decode($obyMeat->description);
}
}
?>
</div>
结果如下:
作为示例输出状态 - 实体确实被重新分解为有效标记但是它们被附加到DOM(或者更确切地说DOM决定了这个?)这是包含元素的textNode的值 - 而不是DOMElement组。提前致谢
答案 0 :(得分:0)
好的,无论出于何种原因,htmlspecialchars_decode()的单次传递都没有完成。这是非常奇怪的,因为<
否则需要显示为&lt;
才能实现这一点 - 无论如何,如果其他人需要它,请留在这里。解决方案看起来像:
<div>
<h1>This is in the middle of a template file</h1>
<?php
foreach ($assocArrayObjEle as $obyKey => $obyMeat) {
if (!is_null($obyMeat->description) && strlen($obyMeat->description)> 0)
{
echo htmlspecialchars_decode(htmlspecialchars_decode($obyMeat->description, ENT_QUOTES), ENT_NOQUOTES); //2nd pass was necessary even tho there were no double escaped entites (amperstands not being double escaped).
}
}
?>
</div>