我有以下HTML代码:
<div class="article__img has-caption" style="background-image: url('img/main/article-plug.png')" >
我正在尝试提取图像 URL 并将其替换为另一个(例如 img/main/article-plug.webp),但我被 XPath 查询困住了,不知道该怎么做。
提前感谢您的帮助!
那是我最后的代码(但它还没有返回任何东西):
$domDocument = new DOMDocument();
$domDocument->loadHTML($article["DESCRIPTION"]);
$domXPath = new DOMXPath($domDocument);
$img = $domXPath->query('substring-before(substring-after(//div[@class=\'article__img has-caption\']/@style, "background-image: url(\'"), "\')")');
使用 DOM 解析器从给定的 HTML 代码中提取图像 URL:
$dom = new DOMDocument();
$dom->loadHTML($html);
$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
if ($div->getAttribute('class') === 'article__img has-caption') {
$style = $div->getAttribute('style');
preg_match('/url\((.*?)\)/', $style, $matches);
$imageUrl = $matches[1];
$newImageUrl = 'img/main/article-plug.webp';
$newStyle = str_replace($imageUrl, $newImageUrl, $style);
$div->setAttribute('style', $newStyle);
}
}
$newHtml = $dom->saveHTML();
echo $newHtml; // output: <div class="article__img has-caption" style="background-image: url('img/main/article-plug.webp')" >
此代码首先将 HTML 加载到 DOM 对象中,找到类为“article__img has-caption”的 div,从其样式属性中提取图像 URL,将其替换为新的图像 URL,更新 div 的样式属性,最后用更新后的图片 URL 生成新的 HTML。