У меня есть такая функция:
$old_cat = $_POST['cat_old'];
$new_cat = $_POST['cat_red'];
$folder_rec = "db/rec";
replace_txt($folder_rec , $old_cat , $new_cat);
function replace_txt($folder_rec , $old_cat , $new_cat) {
$dir_rec = opendir($folder_rec);
while(false !== ($file_rec = readdir($dir_rec))) {
if($file_rec != '.' && $file_rec != '..') {
$file_path_rec = ($folder_rec."/".$file_rec);
if(is_file($file_path_rec)) {
$file_rec_content = file($file_path_rec);
$file_rec_content[1] = str_replace($old_cat , $new_cat , $file_rec_content[1]);
file_put_contents($file_path_rec , implode('',$file_rec_content));
}
}
}
closedir($dir_rec);
}
с помощью которой производится поиск в файлах в определенной строке, и если есть совпадение, то происходит замена этой строки. Точнее получается так, что заменяется не вся строка целиком, а только найденное слово. Например, есть две категории:
'Very'
'Very Good'
и если я меняю категорию 'Very' на 'Very Very', то замена происходит везде где встречается 'Very' и получается так:
'Very Very'
'Very Very Good'.
Но как сделать так, чтобы замена происходила только тогда, когда есть полное совпадение между имеющимся значением и строкой целиком? Я пытаюсь делать такое сравнение:
function replace_txt($folder_rec , $old_cat , $new_cat) {
$dir_rec = opendir($folder_rec);
while(false !== ($file_rec = readdir($dir_rec))) {
if($file_rec != '.' && $file_rec != '..') {
$file_path_rec = ($folder_rec."/".$file_rec);
if(is_file($file_path_rec)) {
$file_rec_content = file($file_path_rec);
if($old_cat == $file_rec_content[1]) { //сравниваю старое значение со строкой
$file_rec_content[1] = str_replace($old_cat , $new_cat , $file_rec_content[1]);
file_put_contents($file_path_rec , implode('',$file_rec_content));
}
}
}
}
closedir($dir_rec);
}
но при этом тогда вообще нигде замены не происходит. Подскажите, пожалуйста, верный вариант решения задачи.