Помогите найти скрипт, пожалуйста!

Lord-Freeman
На сайте с 27.12.2006
Offline
140
536

Здравствуйте!

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

Есть ли такой?

Lord-Freeman
На сайте с 27.12.2006
Offline
140
#1

Извините, но я надеялся найти какое-то бесплатное решение... :) Но всё равно спасибо за предложение!

wdsg
На сайте с 09.02.2009
Offline
31
#2

Делаем примерно так:


$Path = '/mypath/'; // Это путь до директории
$Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание
$From = 'a'; // Что заменять
$To = 'b'; // На что заменять

$Files = scandir($Path);
foreach($Files as $FileName) {
if (!strpos($FileName, $Mask) === false) {
$Content = file_get_contents($Path.$FileName);
$Content = str_replace($From, $To, $Content);
file_put_contents($Path.$FileName, $Content);
}
}

Вот, собственно, и всё. Должно работать :)

Проектирование и разработка сложных IT-систем. Вожусь с проблемными задачами.
funky
На сайте с 15.02.2009
Offline
35
#3

может просто слить все файлы к себе и Notepad++ заменить? а потом обратно ?

Lord-Freeman
На сайте с 27.12.2006
Offline
140
#4

funky, сливать много... там просто помимо php фалов ещё много видео файлов...

wdsg, работает, только если права типа 666 прописать. А если 644... то не получается. Да и в подпапках не получается менять файлы...

wdsg
На сайте с 09.02.2009
Offline
31
#5
Lord-Freeman:
Т.е. есть на сервере папка с файлами php в которых нужно старый путь к корню заменить на новый.

Так не стояло задачи субдиры окучивать. Давайте немного доработаем:


$Path = '/mypath/'; // Это путь до директории
$Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание
$From = 'a'; // Что заменять
$To = 'b'; // На что заменять

StrReplaceInDir($Path, $Mask, $From, $To);

function StrReplaceInDir($Path, $Mask, $From, $To) {
$Files = scandir($Path);
foreach($Files as $FileName) {
$File = $Path.$FileName;
if (is_dir($File) and $FileName != '.' and $FileName != '..') {
StrReplaceInDir($File.'/', $Mask, $From, $To);
}
elseif (!strpos($FileName, $Mask) === false) {
$Content = file_get_contents($File);
$Content = str_replace($From, $To, $Content);
file_put_contents($File, $Content);
}
}
}

Что касается прав, разумеется, если юзер, под которым запускается php (или httpd, если Вы через него запускаете), не имеет прав на запись в целевые файлы, ничего не выйдет.

arkadiy_a
На сайте с 11.06.2008
Offline
82
#6
Lord-Freeman:
Здравствуйте!
Мне нужен скрипт, который мог бы заменять части кода в php файлах. Т.е. есть на сервере папка с файлами php в которых нужно старый путь к корню заменить на новый. Файлов много..
Есть ли такой?

ТС я бы проще сделал: поставил бы симлинк (у вас юниксовый хостинг наверное?) вместо старой директории, симлинк указывает на новую папку.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий