|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 62668.9284 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
15.06.2011, 09:32
|
#1
|
Member
Регистрация: 15.03.2010
Сообщений: 41
Бабло: $15445
|
нужен скрипт
имеем
domain.com/papka/zpapka/
domain.com/papka/ypapka/
domain.com/papka/mpapka/
в каждой папке по много html файлов.
нужно в каждом файле поменять одну строчку на другую.
по срочняку нужно
накиньте пжалста готовый рецепт, или мож кто состряпает за символическую плату?
|
|
|
15.06.2011, 09:55
|
#2
|
Senior Member
Регистрация: 03.11.2009
Сообщений: 151
Бабло: $20330
|
лови
PHP код:
function replace($dir, $search, $replace) {
echo $dir.PHP_EOL;
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if($entry == "." || $entry == "..")
continue;
$f = $dir.DIRECTORY_SEPARATOR.$entry;
if(is_file($f)) {
$repl = preg_replace($search, $replace, file_get_contents($f));
if($repl) file_put_contents($f, $repl);
} else
replace($f, $search, $replace);
}
$d->close();
}
replace(realpath("папко где ищем"), "/что ищем/", "на что меняем");
|
|
|
15.06.2011, 10:48
|
#3
|
Member
Регистрация: 15.03.2010
Сообщений: 41
Бабло: $15445
ТС -->
|
ТС
спасибо большое мил человек. пойду тестить
|
|
|
15.06.2011, 11:59
|
#4
|
Senior Member
Регистрация: 29.09.2008
Сообщений: 1,660
Бабло: $211348
|
вот ещё вариант (делает замену во всех папках сразу)
PHP код:
<?php
$text = 'старый текст'; // Искомая строка
$retext = 'новый текст'; // Строка замены
$dirname = ".";
scan_dir($dirname); // Вызов рекурсивной функции
//////////////////////////////////////////////////////////
// Рекурсивная функция - спускаемся вниз по каталогу
//////////////////////////////////////////////////////////
function scan_dir($dirname)
{
// Объявляем переменные замены глобальными
GLOBAL $text, $retext;
$allowed_files = array("php","html","htm"); // Опеределяем файлы для замены. Можно оставить только php или только html
//$allowed_files = explode( ',', strtolower( $mscfg['filetypes'] ) );
// Открываем текущую директорию
$dir = opendir($dirname);
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false)
{
// Если файл обрабатываем его содержимое
if($file != "." && $file != ".." && $file != "zamena.php") // Здесь имя файла с этим скриптом, чтобы в нем ничего не менять
{
// Если имеем дело с файлом - производим в нём замену
if(is_file($dirname."/".$file))
{
$tfile = array_pop(explode('.', $dirname."/".$file));
//echo $tfile;
//echo "<br>";
if (in_array(strtolower($tfile), $allowed_files))
{
// Читаем содержимое файла
$content = file_get_contents($dirname."/".$file);
// Осуществляем замену
$content = str_replace($text, $retext, $content);
// Перезаписываем файл
file_put_contents($dirname."/".$file,$content);
}
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file))
{
echo $dirname."/".$file."<br>";
scan_dir($dirname."/".$file);
}
}
}
// Закрываем директорию
closedir($dir);
}
?>
|
|
|
15.06.2011, 12:06
|
#5
|
Senior Member
Регистрация: 22.08.2008
Сообщений: 927
Бабло: $173840
|
нужен похожий скрипт, только файлы на удаленных хостах с доступом по ФТП. и 50 вариантов для подмены на случайный вариант из файла. Т.Е. в каждом файле может быть от 1 до несколько подмен.
|
|
|
15.06.2011, 12:53
|
#6
|
Ебланнед
Регистрация: 27.10.2009
Сообщений: 1,628
Бабло: $240645
|
тс совсем не палится )
|
|
|
15.06.2011, 13:43
|
#7
|
Member
Регистрация: 15.03.2010
Сообщений: 41
Бабло: $15445
ТС -->
|
ТС
Цитата:
Сообщение от redlain
тс совсем не палится )
|
ну кстати без всякой грязи
|
|
|
15.06.2011, 13:59
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Код:
find papka/ -type f -exec sed -i 's/from/to/ig' '{}' \;
если нужно учитывать регистр, то вместо ig просто g
|
|
|
15.06.2011, 21:28
|
#9
|
Senior Member
Регистрация: 04.09.2007
Сообщений: 1,267
Бабло: $254000
|
Цитата:
ну кстати без всякой грязи
|
ага, сквозняки с пирогов, какая там грязь?
|
|
|
15.06.2011, 21:30
|
#10
|
накидка-антиблик адидас
Регистрация: 20.11.2010
Сообщений: 2,137
Бабло: $361580
|
|
|
|
|