我有一些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)
我知道这有一些正则表达式的魔力,只是不确定它应该是什么样的(或者这实际上是最好的方式).
我尝试用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:如果您需要澄清您的问题,您应该编辑原始问题,而不是打开一个新的,完全相同的问题.