Размещено: 2023-12-08 18:11:52
Теги: php
ПОИСК ПО ФАЙЛАМ И ЗАМЕНА
Поиск, замена содержимого по файловой системе на сервере с помощью php можно выполнить следующим образом:
//автоматическая замена текста во всех файлах или поиск текста в файлах function text_search($path,$text,$new_text) { foreach(glob($path) as $dir) { if(is_dir($dir)) { text_search($dir.'/*',$text,$new_text); } elseif($dir=='../main/replace.php'){}//это наш текущий файл, в нем ничего не меняем else { unset($content); $content=file_get_contents($dir); if(strpos($content, $text)!==false) { unset($new_content); $new_content=str_replace($text,$new_text,$content); //Если строки ниже закомментированы то просто выполняем поиск, без замены //$new_content=str_replace($text,$new_text,$content); //file_put_contents($dir,$new_content); echo $dir.'<br>'; //echo $new_content; //exit; } } } } $text='text'; $new_text='newtext'; //путь относительно расположения текущего файла, текст поиска, текст замены text_search('../*',$text,$new_text);
Есть так же продвинутый вариант:
function scan($path) { foreach(glob($path) as $dir) { if(is_dir($dir)) { scan($dir.'/*'); } //это наш текущий файл, в нем ничего не меняем, впринципе можно эту строку убрать, //тогда появляется бонус - два раза замена не произойдет elseif($dir==CONST_ETOT_FILE){} else { search_and_replace($dir); } } } function search_and_replace($dir) { //проверяем расширение файла, если оно не соответствует требуемому - выходим $rash=explode('.',$dir); if(($rash[count($rash)-1])!=CONST_RASH) { return false; } //получаем содержимое файла $content=file_get_contents($dir); //получаем массив замен из константы помещаем в массив $replacer=json_decode(CONST_REPLACER, true); foreach($replacer as $k=>$v) { if(strpos($content, $k)!==false) { //если какое-то слово, которое планируется заменить в контенте найдено, //то меняем все остальные, записываем и выходим из цикла и функции $new_content=str_replace(array_keys($replacer),array_values($replacer),$content); //что бы вначале посмотреть в каких файлах будет происходить замена можно строку ниже закомментировать //file_put_contents($dir,$new_content); echo $dir.'<br>'; return true; } } return false; } //КОРНЕВАЯ ДИРЕКТОРИЯ В КОТОРОЙ ЛЕЖИТ НАШ ФАЙЛ И В КОТОРОЙ БУДЕТ ПРОИСХОДИТЬ ЗАМЕНА $dir='.'; //ассоциативный массив замены "старое_значение"=>"новое_значение" define('CONST_REPLACER',json_encode(array( "text1"=>"newtext1", "text2"=>"newtext2", "text3"=>"newtext3" ))); //ЧТО БЫ В САМОМ ЭТОМ ФАЙЛЕ НИЧЕГО НЕ МЕНЯТЬ define('CONST_ETOT_FILE',$dir.'/'.pathinfo(__FILE__,PATHINFO_BASENAME)); //С КАКИМ РАСШИРЕНИЕМ ФАЙЛЫ ТРОГАТЬ define('CONST_RASH','php'); scan($dir);
На эту страницу чаще всего попадают по запросам: replace, замена в файлах, поиск текста в файлах, поиск по файлам, замена в файлах, найти и заменить в файлах, replacer