有没有办法做到这一点?我想用另一个元素替换一个元素,但不知何故,这在 PHP 中是不可能的。得到以下代码($content 在我的真实代码中是有效的 html5,但去掉了一些东西以使代码更短。):
$content='<!DOCTYPE html>
<content></content>
</html>';
$with='<img class="fullsize" src="/slide-01.jpg" />';
function replaceCustom($content,$with) {
@$document = DOMDocument::loadHTML($content);
$source = $document->getElementsByTagName("content")->item(0);
if(!$source){
return $content;
}
$fragment = $document->createDocumentFragment();
$document->validate();
$fragment->appendXML($with);
$source->parentNode->replaceChild($fragment, $source);
$document->formatOutput = TRUE;
$content = $document->saveHTML();
return $content;
}
echo replaceCustom($content,$with);
如果我替换为<img class="fullsize" src="/slide-01.jpg" />
,<img class="fullsize" src="/slide-01.jpg">
则内容标记将替换为空字符串。即使没有结束标记的 img 是完全有效的 html,它也不会工作,因为 PHP 似乎只支持 xml。我见过的所有示例代码都使用 appendXML 从字符串创建 documentFragment,但没有等效的 HTML。
有没有办法做到这一点,所以它不会因有效的 HTML 而无效的 XML 而失败?