php заменит все атрибуты src img в файле

У меня есть ссылки на страницы:

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)); 

Цель:

Я хочу заменить все атрибуты src элемента img в файле import.html и вернуть файл с новыми ссылками на изображения. Мне удалось создать замену одного элемента.

Как отредактировать это, чтобы просмотреть весь файл и заменить все атрибуты и вернуть новый import.html с замененными src ?

Solutions Collecting From Web of "php заменит все атрибуты src img в файле"

Метод 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(); } 

Вы можете просто просмотреть все теги и заменить их. Не испытано!

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

Используйте 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(); }