Hello_mate。
私はあなたを理解している場合だけでなく、あなたは<a>
タグを削除したいと私は正確にあなたの関数cj_DOMinnerHTML
が何をしているかわからないが、私はあなたが間違っている最初の引数としてreplaceChild
方法にDOMDocument
のインスタンスを渡していることがわかります。 documentationを参照すると、正確にreplaceChild
が機能しています(DOMNode
の2つの引数を受け入れます)。とにかく私は<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());
OUTPUT
<!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-> removeChild($ link);私はこのコードで私の問題を解決しました。私はあなたのコードを試してみます。 –
コードメイトに感謝します。それはうまく動作します –
あなたは歓迎です、これはあなたに役立ってうれしいです:) – codtex