Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Замена строки во всех файлах директории...(Примеры скриптов на PHP)

Сообщения:  [1-5] 

 
 автор: Akira   (30.07.2005 в 19:02)   письмо автору
 
   для: cheops   (30.07.2005 в 18:54)
 


<?
 
// Извлекаем из имени файла расширение
$ext strrchr($dirname."/".$file"."); 
 foreach(
$extentions as $exten)
 if(
preg_match($exten$ext))
?>

Я когда без них написал :) У меня файлов было не текстовых около 50 :)) представляете, что произошло? Он пытался открыть каждый файл. Вот я и подумал, что надо бы сделать так же как и в подсчете строк.

   
 
 автор: cheops   (30.07.2005 в 18:54)   письмо автору
 
   для: Akira   (30.07.2005 в 18:50)
 

Каюсь, это так, а в смысле проверки расширений?

   
 
 автор: Akira   (30.07.2005 в 18:50)   письмо автору
 
   для: cheops   (30.07.2005 в 18:41)
 

Так у вас именно file_put_contents() написан, а нет предупреждения о том, что только в 5 версии работает :)
А что насчет проверки расширения?

   
 
 автор: cheops   (30.07.2005 в 18:41)   письмо автору
 
   для: Akira   (30.07.2005 в 18:12)
 

Да, про file_put_contents() я тоже подумал, но решил оставить именно этот вариант для наглядности.

   
 
 автор: Akira   (30.07.2005 в 18:12)   письмо автору
 
 

1) Код написанный cheops предназначен только для 5 версии (file_put_contents). О чем не упоминаеться :( 5 мин. потратил на поиски у себя ошибки.
2) Есть ошибка в производительности т.к. не проверяеться расширение файла.
Значит будут открываться или пытаться открыться не нужные файлы, что занемает время.
3) Переписал код, добавив туда проверку расширения. Заменил функцию file_put_contents. С использование glob.

<?
function scan_dir($dirname

    GLOBAL 
$text$retext$extentions;
    
# Если путь пустой, то используем текущий каталог 
    
empty($dirname) ? $dirname "*" $dirname $dirname."/*"
    
$dir glob($dirname);
    
// Если директория существует обходим. 
    
if ($dir
    { 
        foreach(
$dir as $filename
        { 
            if (
is_file($filename)) 
            { 
                  
// Расширение файла
                  
$ext=strrchr($filename".");
                  foreach(
$extentions as $exten)
                  
// Если файл попадает под маску,то считаем строки
                  
if(preg_match($exten$ext))
                  {
                      
// Читаем содержимое файла 
                      
$content file_get_contents($filename); 
                      
// Осуществляем замену 
                      
$content str_replace($text$retext$content); 
                      
// Перезаписываем файл 
                      
$fopen fopen($filename,"w");
                      
fwrite($fopen,$content);
                      
fclose($fopen);
                  }
            } 
            if (
is_dir($filename)) 
            { 
                
scan_dir($filename); 
            } 
        } 
    } 

$text 'Testing'// Искомая строка
$retext 'ReTesting'// Строка замены
// Массив с расширениями файлов, для которых следует подсчитывать
// число строк
$extentions = array("#\.html#i"); 
// $extentions = array("#\.cpp#i","#\.h#i");
// Счётчик строк - глобальная переменная
scan_dir("");  // Вызов рекурсивной функции
echo "=)"
?>

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования