我有点破解我的 WordPress 主题页脚,我发现了一个小问题。
我正在做的是获取父主题的页脚,捕获输出,并使用 DOMDocument 修改元素。这是我的代码:
<?php
// I apologize in advance for my messy code....
/**
* JavaScript-like HTML DOM Element
*
* This class extends PHP's DOMElement to allow
* users to get and set the innerHTML property of lalalalala....
*
* @author Keyvan Minoukadeh - http://www.keyvan.net - keyvan@keyvan.net
* @see http://fivefilters.org (the project this was written for)
*/
// blahblahblah
ob_start();
require get_theme_root() . '/responsive/footer.php';
$output = ob_get_clean();
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->registerNodeClass('DOMElement', 'JSLikeHTMLElement');
$dom->loadHTML($output);
$finder = new DomXPath($dom);
$classname="powered";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$elem = $nodes->item(0);
$elem->innerHTML = "hahaha..gotcha!";
echo $dom->saveHTML();
?>
但是,页脚输出包含两个</div>
s (意外的结束标记),这让 DOMDocument 抱怨。事实上,它只是摆脱了那些</div>
s 并使页面看起来很奇怪。我不能只添加</div></div>
到输出的开头,因为 s 周围有填充物</div>
。
有没有办法让 DOMDocument 忽略那些意外的标签并将它们留在那里,或者我应该使用不同的库?