Есть форма с двумя инпутами - исходное значение и заменяемое, форма отправляет 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, что в этом файле текст заменен...
Подскажите, пожалуйста, как грамотнее отобразить оповещение только о тех файлах, в которых значение было изменено?
Используйте 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 "Параметры для замены не найдены!";
}
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть код для подключения стилей и скриптов из header в footer для оптимизации