Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Фунция: Замена определенной строки во всех файлах сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PHP
grefon
Отправлено: 14 Марта, 2011 - 15:56:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




В связи с переездом одного моего сайта на новый домен потребовалось перебить много контента в нескольких сотнях файлов. Ручками как-то влом было делать. По этому написал вот такую функцию, может кому-то будет полезна:

PHP:
скопировать код в буфер обмена
  1. function ZamenaContenta($path) {
  2.    if(file_exists($path) && is_dir($path)) {
  3.       $dirHandle = opendir($path);
  4.       while (false !== ($file = readdir($dirHandle))) {
  5.          if ($file!='.' && $file!='..') {
  6.             $tmpPath=$path.'/'.$file;
  7.             if (is_dir($tmpPath)) {
  8.                ZamenaContenta($tmpPath);
  9.                } else {
  10.                $content = file_get_contents($tmpPath);
  11.                   if (strpos($content, "что меняем")) {
  12.                      $data = str_replace('что меняем', "на что меняем", $content);
  13.                      $file = fopen($tmpPath,'w');
  14.                      fwrite($file, $data);
  15.                      fflush($file);
  16.                      fclose($file);
  17.                      echo "$tmpPath :: Успешно отредактирован<br/>";
  18.                   }
  19.               }
  20.          }
  21.       }
  22.       closedir($dirHandle);
  23.    }
  24. }
  25. ZamenaContenta(".");
  26.  


Функция рекурсивно проходит все каталоги, проверяет во всех файлах на сайте наличие нужного нам куска текста, который нужно заменить, и если находит то меняет его.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
ALEN Модератор
Отправлено: 14 Марта, 2011 - 20:40:10
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




1)
PHP:
скопировать код в буфер обмена
  1.  $file = fopen($tmpPath,'w');
  2. fwrite($file, $data);
  3. fflush($file);
  4. fclose($file);

Метод устарел, предлагаю использование file_put_contents.

2) Что на счет прав доступа к файлам, если они заблокированы от записи?

3) В функцию лучше передавать, что меняем и на что
 
 Top
grefon
Отправлено: 14 Марта, 2011 - 22:58:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




ALEN пишет:
1)Метод устарел, предлагаю использование file_put_contents.

Возможно и устарел. Я как-то не очень ориентируюсь в новшествах. Можно заменить, тут совершенно не принципиально.
ALEN пишет:
2) Что на счет прав доступа к файлам, если они заблокированы от записи?

Мне не нужно было ставить права, поскольку я знал что все файлы имеют доступ к записи. При желании всегда можно вставить чмод. Это пару секунд дела Улыбка
ALEN пишет:
3) В функцию лучше передавать, что меняем и на что

Для удобства пользование наверное да - Вы правы. Но мне, опять же, не нужно было таких "наворотов".
В любом случае, спасибо за комментарий. На будущее учту Улыбка


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB