Hello_ mate。
如果我理解你以及你要删除的<a>
标签,我不知道究竟你的函数cj_DOMinnerHTML
是干什么的,但我看到你逝去的DOMDocument
实例replaceChild
方法,这是不对的第一个参数。请参阅documentation以了解replaceChild
的工作方式(它接受DOMNode
类型的两个参数)。无论如何,我给你一个代码片段,取代<a>
标签。请阅读我放入代码的评论,并尝试更改您的用例的代码。
$html = '
<div id="container">
<a href="xxx.com"><img src="yyy.jpg"></a>
<a href="aaa.com"><img src="aaa.jpg"></a>
<a href="bbb.com"><img src="bbb.jpg"></a>
<a href="ccc.com"><img src="ccc.jpg"></a>
<a href="ddd.com"><img src="ddd.jpg"></a>
<a href="eee.com"><img src="eee.jpg"></a>
</div>';
// load the dom document
$dom = new \DOMDocument();
if (!$dom->loadHTML($html)) {
echo '<h2>Error handle this ...</h2>';
}
// instantiate DOMXPath object
$finder = new \DOMXPath($dom);
// get all <a> tags of element that has id="container"
$anchors = $finder->query("//*[contains(concat(' ', normalize-space(@id), ' '), 'container')]/descendant::a");
// loop through all <a>
foreach ($anchors as $a) {
$parent = $a->parentNode;
// the following row of code will actually remove the <a> tag
$parent->replaceChild($a->childNodes->item(0), $a);
}
// show output
echo htmlspecialchars($dom->saveHTML());
输出
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<body>
<div id="container">
<img src="yyy.jpg">
<img src="aaa.jpg">
<img src="bbb.jpg">
<img src="ccc.jpg">
<img src="ddd.jpg">
<img src="eee.jpg">
</div>
</body>
</html>
我希望你能理解的代码,你将能够修改它为您的工作需要。
祝你好运的朋友!
谢谢。 $ link-> parentNode-> insertBefore($ img,$ link); $ link-> parentNode-> insertBefore($ img,$ link); $ link-> parentNode-> removeChild($ link);我通过此代码解决了我的问题。我会试着用你的代码。 –
感谢代码队友。它工作正常 –
不客气,我很高兴这对你有帮助:) – codtex