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

时间:2013-11-21 14:29:11

标签: php html dom

我有这样的页面链接:

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 文件中<{1}}元素的所有 src属性和返回文件与新的图像链接。我设法创建替换一个元素。

如何编辑此内容以浏览整个文件并替换所有属性,返回新的import.html 并替换为img

4 个答案:

答案 0 :(得分:10)

getElementsByTagName()方法将返回包含所有匹配元素的DOMNodeList对象。目前,您只需修改一个img代码。要替换所有img标记,只需使用foreach

循环遍历它们
function replace_img_src($img_tag) {
    $doc = new DOMDocument();
    $doc->loadHTML($img_tag);
    $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);
    }
    return $doc->saveHTML();
}

答案 1 :(得分: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);
}

答案 2 :(得分:0)

foreach ($tags as $tag)
{
        $old_src = $tag->getAttribute('src');
        $new_src_url = 'website.com/assets/'.$old_src;
        $tag->setAttribute('src', $new_src_url);
}

答案 3 :(得分:0)

使用foreach遍历所有元素。

function replace_img_src($img_tag) {
    $doc = new DOMDocument();
    $doc->loadHTML($img_tag);
    $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);
    }

    return $doc->saveHTML();
}