OK, самое лучшее решение в php для поиска через кучу содержимого файлов для определенной строки и замены его чем-то другим.Найти и заменить в нескольких файлах
Точно так же, как блокнот ++ делает это, но, очевидно, мне не нужен интерфейс для этого.
OK, самое лучшее решение в php для поиска через кучу содержимого файлов для определенной строки и замены его чем-то другим.Найти и заменить в нескольких файлах
Точно так же, как блокнот ++ делает это, но, очевидно, мне не нужен интерфейс для этого.
foreach (glob("path/to/files/*.txt") as $filename)
{
$file = file_get_contents($filename);
file_put_contents($filename, preg_replace("/regexhere/","replacement",$file));
}
Так я недавно столкнулся с проблемой, в которой наш веб-узел, преобразованного из PHP 5.2 до 5.3, и в процессе он сломал нашу установку Magento. Я сделал некоторые индивидуальные настройки, которые были предложены, но обнаружил, что все еще есть некоторые сломанные области. Я понял, что большинство проблем связано с проблемой с функцией «toString», присутствующей в Magento, и теперь устаревшей функцией разделения PHP. Увидев это, я решил, что попытаюсь создать код, который найдет и заменит все различные случаи сломанных функций. Мне удалось добиться успеха в создании этой функции, но, к сожалению, подход «выстрел» не сработал. У меня до сих пор были ошибки. Тем не менее, я чувствую, что код имеет большой потенциал, и я хотел опубликовать то, что я придумал.
Пожалуйста, используйте это с осторожностью. Я бы рекомендовал закрепить копию ваших файлов, чтобы вы могли восстановить их из резервной копии, если у вас есть какие-либо проблемы.
Кроме того, вы не обязательно хотите использовать это как есть. Я предоставляю код в качестве примера. Вероятно, вы захотите изменить то, что заменено.
Способ, которым работает код, заключается в том, что он может находить и заменять все, что находится в папке, в которую она помещена, и в подпапках. Я настроил его так, что он будет искать файлы только с расширением PHP, но вы можете изменить его по мере необходимости. По мере поиска он перечислит, какие файлы он изменил. Чтобы использовать этот код, сохраните его как «ChangePHPText.php» и загрузите этот файл туда, где вам нужны изменения. Затем вы можете запустить его, загрузив страницу, связанную с этим именем. Например, mywebsite.com \ ChangePHPText.php.
<?php
## Function toString to invoke and split to explode
function FixPHPText($dir = "./"){
$d = new RecursiveDirectoryIterator($dir);
foreach(new RecursiveIteratorIterator($d, 1) as $path){
if(is_file($path) && substr($path, -3)=='php' && substr($path, -17) != 'ChangePHPText.php'){
$orig_file = file_get_contents($path);
$new_file = str_replace("toString(", "invoke(",$orig_file);
$new_file = str_replace(" split(", " preg_split(",$new_file);
$new_file = str_replace("(split(", "(preg_split(",$new_file);
if($orig_file != $new_file){
file_put_contents($path, $new_file);
echo "$path updated<br/>";
}
}
}
}
echo "----------------------- PHP Text Fix START -------------------------<br/>";
$start = (float) array_sum(explode(' ',microtime()));
echo "<br/>*************** Updating PHP Files ***************<br/>";
echo "Changing all PHP containing toString to invoke and split to explode<br/>";
FixPHPText(".");
$end = (float) array_sum(explode(' ',microtime()));
echo "<br/>------------------- PHP Text Fix COMPLETED in:". sprintf("%.4f", ($end-$start))." seconds ------------------<br/>";
?>