Замены во всех файлах папки php

Массовая замена текста в файлах

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

Пример:

// пример использования $oldText = 'old text'; // что меняем $newText = 'new text'; // на что меняем $folderName = "./files"; // в какой папке меняем replace_txt($folderName, $oldText, $newText); /** * Функция замены текста во всех файлах папки * * @param string $folderName - пусть до папки * @param string $oldText - искомый текст * @param string $newText - на что меняем текст */ function replace_txt($folderName, $oldText, $newText) < // открываем текущую папку $dir = opendir($folderName); // перебираем папку // перебираем пока есть файлы while (($file = readdir($dir)) !== false)< // если это не папка if($file != "." && $file != "..")< // если файл if(is_file($folderName."/".$file))< // открываем файл $contentFile = file_get_contents($folderName."/".$file); // для работы с файлами в // кодировке windows-1251 //$contentFile = iconv("windows-1251", "utf-8", $contentFile); // делаем замену в тексте $contentFile = str_replace($oldText, $newText, $contentFile); // сохраняем изменения file_put_contents($folderName."/".$file,$contentFile); >// если папка, то рекурсивно // вызываем replace_txt if(is_dir($folderName."/".$file)) < replace_txt($folderName."/".$file, $oldText, $newText); >> > // закрываем папку closedir($dir); >

Добавить комментарий Отменить ответ

Контакты

Рубрики

  • API соц.сетей (14)
  • Arduino (26)
  • HTML и CSS (29)
  • Java Script (56)
  • JQuery (32)
  • PHP (144)
  • SQL (15)
  • Готовые проекты (7)
  • Книга «128 рецептов php» (128)
  • Настройки (3)
  • Оффтоп (2)
Читайте также:  Java keystore certificate list

Свежие записи

Популярные записи

Архивы

  • Апрель 2021 (1)
  • Март 2021 (1)
  • Февраль 2021 (1)
  • Июнь 2020 (1)
  • Май 2018 (1)
  • Апрель 2018 (4)
  • Март 2018 (6)
  • Февраль 2018 (5)
  • Январь 2018 (2)
  • Декабрь 2017 (6)
  • Ноябрь 2017 (5)
  • Март 2017 (1)
  • Декабрь 2016 (2)
  • Ноябрь 2016 (5)
  • Октябрь 2016 (5)
  • Май 2016 (1)
  • Декабрь 2014 (1)
  • Ноябрь 2014 (63)
  • Октябрь 2014 (70)
  • Сентябрь 2014 (28)
  • Август 2014 (13)
  • Апрель 2014 (5)
  • Март 2014 (10)
  • Февраль 2014 (6)
  • Январь 2014 (46)
  • Декабрь 2013 (1)
  • Ноябрь 2013 (1)
  • Октябрь 2013 (6)
  • Сентябрь 2013 (17)
  • Июль 2013 (9)
  • Июнь 2013 (4)
  • Март 2013 (2)
  • Февраль 2013 (24)

Источник

Замена текста во всех файлах папки и подпапок. Пример рекурсии

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

/** * Функция замены текста во всех файлах папки * * @param string $folderName - пусть до папки * @param string $oldText - искомый текст * @param string $newText - на что меняем текст */ function replace_text_files($folderName, $oldText, $newText) < // открываем текущую папку $dir = opendir($folderName); // перебираем папку while (($file = readdir($dir)) !== false)< // перебираем пока есть файлы if($file != "." && $file != "..")< // если это не папка if(is_file($folderName."/".$file))< // если файл $contentFile = file_get_contents($folderName."/".$file); // открываем файл //$contentFile = iconv("windows-1251", "utf-8", $contentFile); // для работы с файлами в кодировке windows-1251 $contentFile = str_replace($oldText, $newText, $contentFile); // делаем замену в тексте file_put_contents($folderName."/".$file,$contentFile); // сохраняем изменения >// если папка, то рекурсивно вызываем replace_text_files if(is_dir($folderName."/".$file)) replace_text_files($folderName."/".$file, $oldText, $newText); > > // закрываем папку closedir($dir); >
// пример использования $oldText = 'old text'; // что меняем $newText = 'new text'; // на что меняем $folderName = "./files"; // в какой папке ищем replace_text_files($folderName, $oldText, $newText);

Источник

Читайте также:  Read and replace python

Массовая замена текста в файлах с помощью PHP или поиск в них

Этот пример может быть полезен, при работе с большим количеством файлов.

Пример ниже покажет, как можно перебрать все файлы в заданной папке, а также во всех вложенных папках и заменить в них строку на строку.

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

$oldText = 'old text'; // что меняем $newText = 'new text'; // на что меняем $folderName = "./files"; // в какой папке меняем // запускаем функцию replace_txt( $folderName, $oldText, $newText ); /** * Функция замены текста во всех файлах папки * @param string $folderName - пусть до папки * @param string $oldText - искомый текст * @param string $newText - на что меняем текст */ function replace_txt( $folderName, $oldText, $newText ) < $dir = opendir( $folderName ); // открываем текущую папку // перебираем папку, пока есть файлы while( false !== ($file = readdir($dir)) )< // если это не папка if( $file != '.' && $file != '..' )< $file_path = "$folderName/$file"; // это файл if( is_file($file_path) )< $file_content = file_get_contents( $file_path ); // получаем конетнт файла // для работы с файлами в кодировке windows-1251 //$file_content = iconv( "windows-1251", "utf-8", $file_content ); // делаем замену в тексте $file_content = str_replace( $oldText, $newText, $file_content ); // сохраняем изменения file_put_contents( $file_path, $file_content ); >// это папка, рекурсивно вызываем replace_txt() elseif( is_dir($file_path) ) < replace_txt( $file_path, $oldText, $newText ); >> > closedir( $dir ); // закрываем папку >

Источник

Замена строки во всех файлах директории с неограниченным числом вложенных поддиректорий

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

Код рекурсивной фукнции scan_dir(), которая обходит директории

 ////////////////////////////////////////////////////////// // Рекурсивная функция - спускаемся вниз по каталогу ////////////////////////////////////////////////////////// function scan_dir($dirname)  // Объявляем переменные замены глобальными GLOBAL $text, $retext; // Открываем текущую директорию $dir = opendir($dirname); // Читаем в цикле директорию while (($file = readdir($dir)) !== false)  // Если файл обрабатываем его содержимое if($file != "." && $file != "..")  // Если имеем дело с файлом - производим в нём замену if(is_file($dirname."/".$file))  // Читаем содержимое файла $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."
"
; scan_dir($dirname."/".$file); > > > // Закрываем директорию closedir($dir); > ?>

Воспользоваться результатами можно при помощи следующего кода

Код вызова функции scan_dir()

 = '$text'; // Искомая строка $retext = '$retext'; // Строка замены $dirname = "Имя корневой директории, например ."; scan_dir($dirname); // Вызов рекурсивной функции ?> 

Источник

Оцените статью