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

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

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

                        
$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 ); // закрываем папку
}
0 95 0
Без комментариев...