【发布时间】:2019-06-23 14:36:45
【问题描述】:
我有一些 HTML 包含(除其他外)p-tags 和 figure-tags,其中包含一个 img-tag。
为简单起见,我将在此处的 PHP 变量中定义一个可以在 HTML 中找到的示例:
$content = '<figure class="image image-style-align-left">
<img src="https://placekitten.com/g/200/300"></figure>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>';
我使用 DOMDocument 来获取 $content,在本例中,我将更改 figure-element 中所有 img-elements 的 src 属性:
$dom = new DOMDocument();
libxml_use_internal_errors(true);
// this needs to be encoded otherwise special characters get messed up.
$domPart = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
$dom->loadHTML($domPart, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$domFigures = $dom->getElementsByTagName('figure');
foreach ($domFigures as $domFigure) {
$img = $domFigure->getElementsByTagName('img')[0];
if ($img) {
$img->setAttribute('src', "https://placekitten.com/g/400/500");
}
}
$result = $dom->saveHTML();
结果是:
<figure class="image image-style-align-left">
<img src="https://placekitten.com/g/400/500">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</figure>
不知何故,我的p-element 已经移动到了我的figure-element。 为什么会发生这种情况,我可以做些什么来防止它?
【问题讨论】:
标签: php domdocument