Если ваши файлы не очень большие - например, сотни мегабайт - вы, конечно, не ограничиваетесь в памяти.Однако вы делаете это довольно неэффективно.
Вы запускаете цикл foreach для обоих массивов поиска и замены, что приводит к экспоненциальному увеличению числа записей в файл.Если str_replace()
принимает только строковые аргументы, вы можете избавиться от одного из этих циклов.Тем не менее, он принимает аргументы массива, поэтому вы можете избавиться от обоих.
function wp_settings_edit(array $filename, array $patterns, array $replace){
foreach($filename as $file){
$wp_file = file_get_contents(__DIR__ . "/$file");
file_put_contents(__DIR__ . "/$file", str_replace($patterns, $replace, $wp_file));
}
}
Это повысит эффективность и, более того, фактически выполнит ту работу, которую вы хотите.Выполнив вложенный цикл над обоими массивами, как в исходном коде, вы в конечном итоге замените каждый элемент в массиве поиска только на первый элемент массива замен:
$s = ["foo", "bar", "baz"];
$r = ["oof", "rab", "zab"];
$h = "Here is some foo text as well as some bar text and maybe some baz text.";
foreach ($s as $s1) foreach ($r as $r1) $h = str_replace($s1, $r1, $h);
echo $h;
Вывод:
Вот некоторые тексты, а также тексты и, возможно, тексты.