回答編集履歴

1

前回のでは、文字列に複数のimgタグがあった際に同じファイル名に置き換わってしまったので、修正しました

2021/12/31 09:04

投稿

t-hoso
t-hoso

スコア21

test CHANGED
@@ -1,16 +1,18 @@
1
- preg_match("/<img [^>]*src\s*=\s*[\"']?([^\"'> ]+)/i", $path,$match);
1
+ $pregCount = preg_match_all("/<img [^>]*src\s*=\s*[\"']?([^\"'> ]+)/i", $path,$solo);
2
2
 
3
- $url = explode("/",$match[1]);
3
+ for($i=0;$i<$pregCount;$i++) {
4
4
 
5
+ $newPath= "";
5
6
 
7
+ $pathName = explode("/",$solo[1][$i]);//imgの属性値を取り出してスラッシュで分割
6
8
 
7
- $filename = end($url);
9
+ $newPath = end($pathName);//ファイル名だけを取得
8
10
 
9
- $filename = "images/".$filename;
11
+ $newPath = "images/".$newPath;//相対パスの生成
10
12
 
13
+ $path = str_replace($solo[1][$i],$newPath,$path);
11
14
 
12
-
13
- $path = preg_replace("/(<img [^>]*src\s*=)\s*[\"']?([^\"'> ]+)/i", '$1'.$filename, $path);
15
+ }
14
16
 
15
17
 
16
18