Пример ниже покажет, как можно перебрать все файлы в заданной папке, а также во всех вложенных папках и заменить в них строку на строку.
Вместо замены, этот код можно взять за основу, когда нужно создать поиск по файлам в папке и подпапках.
$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 ); // закрываем папку
}