gpt4 book ai didi

php - 用 DOMDocument 替换 div 的图像标签并返回更改后的 html

转载 作者:可可西里 更新时间:2023-11-01 00:31:32 28 4
gpt4 key购买 nike

在下面的代码中,我尝试用一​​些 html 替换在 $content 中找到的每个图像。使用 $dom->saveHTML($image) 我得到图像 html,但 str_replace 没有替换它。我不知道为什么。

$content = '<div class="content"><img src="some-image.png"></div>';
$dom = new DOMDocument;
$dom->loadHTML($content);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
$i = $dom->saveHTML($image);
$replacement = '<div class="test"><a href="#">some link</a><span>test</span></div>';
$content = str_replace($i, $replacement, $content);
}
// $content should be altered with the previous edits.
return $content;

最后,$content 应该返回:

<div class="content"><div class="test"><a href="#">some link</a><span>test</span></div></div>

有什么想法吗?

最佳答案

$dom = new DOMDocument;
$dom->loadHTML($content);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
$node = $dom->createElement("div");
$frag = $dom->createDocumentFragment(); // create fragment
$frag->appendXML('<div class="test"><a href="#">some link</a><span>test</span></div>');
$node.appendChild($frag);
$image->parentNode->replaceChild($node, $image);
}

它是 HTML。 HTML 的动态特性使其很难正确执行正则表达式或字符串替换。但是 PHP 允许通过 DomDocument 进行 dom 操作。因此,选择图像 parentNode 并将图像替换为 div。

使用 createDocumentFragment() 更新了它。这将在内存中创建一个 DOM 片段。您可以将 XML(读取 HTML)作为字符串附加到它。然后您可以将片段附加到节点。

关于php - 用 DOMDocument 替换 div 的图像标签并返回更改后的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263112/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com