php - 动态替换所有<img>标签的 "src"属性

标签 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"/>

我希望将它们替换为

<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"/>

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

最佳答案

我试着用 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;

PS:如果你需要澄清你的问题,你应该编辑你原来的问题而不是打开一个新的,identical question .

关于php - 动态替换所有<img>标签的 "src"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3808285/

相关文章:

php - 通过单个复选框传递多个变量

php - 使用 Laravel Passport 注册用户

php - 一年中的每个月?

python - 根据比对修剪序列

regex - 正则表达式可以用于 Fluid 应用程序中的 URL 模式吗?

c# - 将纪元时间戳转换为日期时间

php - 在 MAMP MacOsX 上更新 PEAR

regex - Grep - 使用 get "Match"到带有 .* 的文本文件末尾不工作

java - Java中电子邮件验证的正则表达式

python - 如何在数据框列中过滤并仅保留 6 位数字