【问题标题】:Find and replace all occurrences of old image name with new name within HTML pages在 HTML 页面中查找所有出现的旧图像名称并将其替换为新名称
【发布时间】:2011-11-20 19:54:02
【问题描述】:

重命名图像后,我想在目录中的所有 HTML 页面上执行搜索。这个想法是找到所有具有旧名称的页面并使用新名称更新页面。

字符串替换部分有问题。

$files = glob('/directory/*.html');
foreach($files AS $file) {
   $html = file_get_contents($file);
   $find = "old.jpg";
   preg_match("#src=(\"?|'?)(http://www.domain.com/images/|/images/)?$find(\"?|'?)#si", $html, $image);
   if (!empty($image[1])) {

       //find and replace all occurrences within page I need help with.

       $write = fopen($file, 'w');
       fwrite($write, $new_html);
       fclose($write);
    }
}

我正在搜索和替换的示例。

查找 src="/images/old.jpg" 替换 src="/images/new.jpg"

找到 src="http://www.domain.com/images/old.jpg 替换 src="http://www.domain.com/images/new.jpg"

查找 src="/old.jpg 忽略

查找 src="http://www.anyotherdomain/old.jpg 忽略

【问题讨论】:

  • 哎哟!您不能只在页面中动态地回显 URL?
  • 为什么不让 PHP 页面将图像的 URL 作为变量包含在内?
  • 这些是静态 HTML 页面而不是 PHP。当我客户通过重命名更改图像时,我也想更改图像引用。

标签: php preg-match str-replace


【解决方案1】:

FAR 更好的解决方案是在每个网页中包含一个带有图像名称的常量,并使用 ti 来引用您的图像路径。

constants.inc.php

<?php
    define('IMAGE_PATH', 'absolute/path/to/image.jpg');
?>

anyotherpage.php

<?php require_once('constants.inc.php'); ?>
...
...
...
<img src="<?php echo IMAGE_PATH ?>">

【讨论】:

    【解决方案2】:

    在文件中替换

    使用支持它的文本编辑器在文件中查找和替换可能是最简单的。

    在许多 IDE 中都有类似的功能(通常是“在文件中查找”或“在项目中查找”),但如果您还没有使用它们,则需要进行更多设置。

    使用 PHP

    如果你绝对使用 PHP,你会想要使用preg_replace()。您可以使用诸如RegexBuddyRubular 之类的正则表达式工具(网上有大量的正则表达式测试人员)或支持正则表达式的文本编辑器来测试您的正则表达式。

    两点建议

    1. 在像这样批量修改文件之前备份或版本化文件。
    2. 不要害怕使用多种模式搜索/替换以获取所有不同的情况。

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多