将DOMDocument对象作为参数给出,如下所示:
class Comparison {
public function __construct($domDocument=null){
$anchors = $domDocument->getElementsByTagName('a');
if($anchors && 0 < count($anchors)){
foreach($anchors as $anchor){
$original = ''; // Not sure how to get this
$ordered = $this->rearrangeAttributes($anchor);
$difference = $this->diff($original,$ordered);
echo 'Original Source: '.$original."\n";
echo 'Ordered Source: '.$ordered."\n";
echo 'Difference: '.$difference."\n\n";
}
}
}
}
如何获得$ original指示的原始HTML字符串?
我目前的做法是从这里开始:http://php.net/manual/en/class.domnode.php
尝试获取有问题的节点的父节点,获取innerHTML,但是考虑到转换中原始源代码发生了一定程度的更改,它看起来不像是一种强大的方法。有没有办法以更有效的方式做到这一点?我也可以传入原始HTML,但是如果有一个已知的解决方案,我想避免兔子洞。
更新 如果您想要父源(已清理)且原始无关紧要,那么Marc B的链接文件非常有用:How to return outer html of DOMDocument?
但是如果您想要原始来源,可以尝试获取行号http://php.net/manual/en/domnode.getlineno.php,但是,目前尚不清楚这是清理后的源代码还是原始源代码。洞察欢迎!