Найти и заменить все вхождения старого имени изображения новым именем на HTML-страницах - PullRequest
0 голосов
/ 20 ноября 2011

После переименования изображения я хочу выполнить поиск по всем 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);
    }
}

Примеры того, что я ищу и заменяю.

Find src = "/ images / old.jpg" replace src = "/ images / new.jpg"

Find src = "http://www.domain.com/images/old.jpg replace src =" http://www.domain.com/images/new.jpg"

Find src = "/ old.jpg игнорировать

Find src = "http://www.anyotherdomain/old.jpg игнорировать

Ответы [ 2 ]

0 голосов
/ 21 ноября 2011

Заменить в файлах

Вероятно, проще всего просто найти и заменить в файлах с помощью текстового редактора, который его поддерживает.

Естьаналогичные функциональные возможности во многих средах разработки (обычно «найти в файлах» или «найти в проекте»), но если вы еще не используете их, необходимо выполнить дополнительную настройку.

Использование PHP

Если выабсолютно есть для использования PHP, вы захотите использовать preg_replace () .Вы можете проверить свое регулярное выражение с помощью инструмента регулярных выражений, такого как RegexBuddy или Rubular (в Интернете есть множество тестеров регулярных выражений), или текстовый редактор, который поддерживает регулярные выражения.Советы

  1. Резервное копирование или версия ваших файлов перед пакетным изменением их следующим образом.
  2. Не бойтесь искать / заменять несколько шаблонов, чтобы получить все различные случаи..
0 голосов
/ 21 ноября 2011

A FAR превосходным решением будет включение константы с именем изображения в каждую веб-страницу и использование ti для ссылки на путь к изображению..php

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

anyotherpage.php

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