动态替换所有<img>标记的"src"属性

njt*_*njt 2 php regex

我有一些HTML,并希望替换所有img标签的"src"属性,以便它们指向另一台主机上相同图像的副本(尽管具有不同的文件名).

例如,给出这三个标签

<IMG SRC="../graphics/pumpkin.gif" ALT="pumpkin">
<IMG BORDER="5" SRC="redball.gif" ALT="*"> 
<img alt="cool image" src="http://www.crunch.com/pic.jpg"/>
Run Code Online (Sandbox Code Playgroud)

我想用它们代替

<IMG SRC="http://myhost.com/cache/img001.gif" ALT="pumpkin">
<IMG BORDER="5" SRC="http://myhost.com/cache/img002.gif" ALT="*"> 
<img alt="cool image" src="http://myhost.com/cache/img003.jpg"/>
Run Code Online (Sandbox Code Playgroud)

我知道这有一些正则表达式的魔力,只是不确定它应该是什么样的(或者这实际上是最好的方式).

Bil*_*win 5

我尝试用SimpleHTMLDOM做这个,它似乎工作:

$html = str_get_html( ... ); // what you have done

$map = array(
  "../graphics/pumpkin.gif"       => "http://myhost.com/cache/img001.gif",
  "redball.gif"                   => "http://myhost.com/cache/img002.gif",
  "http://www.crunch.com/pic.jpg" => "http://myhost.com/cache/img003.gif",
);

foreach ($html->find("img") as $element) {
  if (isset($map[$element->src])) {
    $element->src = $map[$element->src];
  }
}

echo $html;
Run Code Online (Sandbox Code Playgroud)

PS:如果您需要澄清您的问题,您应该编辑原始问题,而不是打开一个新的,完全相同的问题.