Массовая замена текста в файлах с помощью 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 ); // закрываем папку }
—
Эта заметка встроена в: Полезные PHP коды — для опытных