PHP замена текста из массива файлов

150
08 ноября 2019, 10:00

Есть форма с двумя инпутами - исходное значение и заменяемое, форма отправляет GET в файл replace.php

<?php
  $text = $_GET['mac1']; // Искомая строка
  $retext = $_GET['mac2']; // Строка замены
  $files = array(
      "v301.conf", 
      "v302.conf", 
      "v303.conf", 
      "v304.conf", 
      "v305.conf", 
      "v306.conf", 
      "v307.conf", 
      "v308.conf", 
      "v309.conf", 
      "v310.conf", 
      "v311.conf", 
      "v312.conf", 
      "v313.conf"
  ); // Массив файлов, в которых искать и заменять 
  if($text !== "" && $retext !== ""){ // Если исходный и заменяемый тексты не пустые
    foreach($files as $f){ // получаем имена файлов
        $filename = $f;
        $file = file_get_contents($filename); // открываем каждый файл
        $file = str_replace($text, $retext, $file); // заменяем текст
        file_put_contents($filename, $file); // перезаписываем файл 
       echo "Значение в файле ".$f." заменено <br>";
    }

  } else {
    echo "Параметры для замены не найдены!";  
  }

?>

При замене текста, даже если в каком то из файлов его нет, срабатывает echo, что в этом файле текст заменен...

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

Answer 1

Используйте 4й параметр функции замены, он возвращает число произведенных замен. Соответственно, если оно равно нулю, то замен не было.

if($text != $repl){
    $total = 0;
    foreach($files as $f){
        $content = file_get_contents($f);
        $count = 0;
        $content = str_replace($text, $repl, $content, $count); 
        if($count){
             file_put_contents($f, $content); 
             echo "Значение в файле ".$f." заменено <br>";
             $total += $count;
        } 
    }
    if(!$total){
         echo "ничего не заменено"
    }
}
else {
    echo "Параметры для замены не найдены!";  
}
READ ALSO
Проблема запуска внешнего bash скрипта из PHP

Проблема запуска внешнего bash скрипта из PHP

Есть php скрипт, вот кусок кода из него

143
Парсинг таблицы xml в sql [закрыт]

Парсинг таблицы xml в sql [закрыт]

Программа формирует xml файл, подобного формата

117
WP исключить стиль из футера

WP исключить стиль из футера

Есть код для подключения стилей и скриптов из header в footer для оптимизации

117