php替换文件中所有img的src属性

问题描述 投票:5回答:5

我有这样的页面链接:

import.html

<h1>Title</h1>
<img src="img/pic1.jpg" alt="" title="Picture 1" class="pic">
<img src="img/pic2.jpg" alt="" title="Picture 2" class="pic">
<img src="img/pic3.jpg" alt="" title="Picture 3" class="pic">
<p>random text</p>
<img src="img/pic4.jpg" alt="" title="Picture 4" class="pic">

index.php

<?php
//get file content
$html = file_get_contents('import.html');

function replace_img_src($img_tag) {
    $doc = new DOMDocument();
    $doc->loadHTML($img_tag);
    $tags = $doc->getElementsByTagName('img');
    if (count($tags) > 0) {
        $tag = $tags->item(0);
        $old_src = $tag->getAttribute('src');
        $new_src_url = 'website.com/assets/'.$old_src;
        $tag->setAttribute('src', $new_src_url);
        return $doc->saveHTML($tag);
    }
    return false;
}

// usage
$new = replace_img_src($html);
print_r(htmlspecialchars($new));

目标:

我想用新的图像链接替换import.html文件和返回文件src元素的[[all img属性]。我设法创建一个替换元素。

如何编辑它以遍历整个文件并替换所有属性,并用替换的src替换

return new import.html

?>>
我在这样的页面链接中:import.html

标题

“” < img src =“ img / pic2.jpg” alt =“” title =“图片2” class =“ ...”>
php html dom
5个回答
11
投票
getElementsByTagName()方法将返回一个包含所有匹配元素的getElementsByTagName()对象。目前,您只修改了一个DOMNodeList标签。要替换所有img标签,只需使用img遍历它们即可:

0
投票
您可以循环浏览所有标签并替换它们。未经测试!

0
投票
$tags = $doc->getElementsByTagName('img'); foreach ($tags as $tag) { $old_src = $tag->getAttribute('src'); $new_src_url = 'website.com/assets/'.$old_src; $tag->setAttribute('src', $new_src_url); $doc->saveHTML($tag); }

0
投票
使用foreach遍历所有元素。

0
投票
它有效,但是我尝试了这个:
© www.soinside.com 2019 - 2024. All rights reserved.