用 PHP 中另一个 HTML 属性的内容替换一个 HTML 属性

Replace one HTML attribute with the content of another HTML attribute in PHP

假设我有一个 HTML 字符串,多次出现如下所示:

<img scr1="xxxx.jpg" src="aaaa.jpg" other_attributes="some_values" />

我想将 "src" 属性替换为同一标签内 "src1" 属性的值。 (因此在示例中它会改为 src="xxxx.jpg")。

如何使用 PHP 实现此目的?

非常感谢!

使用DOMDocument

<?php
$html = '<img scr1="xxxx.jpg" src="aaaa.jpg" other_attributes="some_values" />';

$dom = new DOMDocument;
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);

$images = $xpath->query("//img");
foreach ($images as $image) {
    if ($image->hasAttribute('scr1')) {
        $src1 = $image->getAttribute('scr1');
        $image->removeAttribute('scr1');
        $image->setAttribute('src', $src1); 
    }
}

echo $dom->saveHTML();

https://3v4l.org/524Al

结果:

<img src="xxxx.jpg" other_attributes="some_values">

更新

来自 Why doesn't PHP DOM include slash on self-closing tags:

header('Content-Type: application/xhtml+xml');
echo $dom->saveXML();