php скрипт, подскажите - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.7196
BTC/USD62117.3152
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 21.05.2010, 11:11   #1
aoki
Senior Member
 
Регистрация: 05.10.2009
Сообщений: 687
Бабло: $152005
По умолчанию php скрипт, подскажите

Есть папка в ней много файлов, нужен скрипт после запуска которого в этой папке, в каждом файле определённая подстрока, менялась на другую подстроку.
aoki вне форума  
Старый 21.05.2010, 11:41   #2
DimaX
Senior Member
 
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
По умолчанию

PHP код:
<?php

$stroka_poiska 
'';//Что ищем
$stroka_zameny '';//На что меняем
$script_name '';//Имя данного скрипта, чтоб его не обработать случайно :)

set_time_limit(0);

$d opendir('.');

while((
$e readdir($d)) !== FALSE
    {
        if (
is_dir($e) || $e == $script_name)
            {
                continue;
            }
            else
            {
                
$file file_get_contents($e);
                
                if (
strpos($file$stroka_poiska) !== FALSE)
                    {
                        
$file str_replace($stroka_poiska$stroka_zameny$file);
                        echo 
'Замена произведена '.$e.'<BR>';
                    }
                    
                
$f fopen ($e'w');
                
fwrite($f$file);
                
fclose($f);
            }
    }

?>
Вроде работает
З.Ы. Немного поправил, малость неправильно работало, если с 1 же символа в файле нужная строка находилась.
DimaX вне форума  
Старый 21.05.2010, 11:55   #3
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

вот вариант покороче:
Код:
find dir/ -type f -exec sed -i 's/from_str/to_str/g' '{}' \;
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 21.05.2010, 12:02   #4
DimaX
Senior Member
 
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
вот вариант покороче:
Код:
find dir/ -type f -exec sed -i 's/from_str/to_str/g' '{}' \;
Это линукс или виндовая командная строка? Сабж про пхп.
Цитата:
php скрипт, подскажите
DimaX вне форума  
Старый 21.05.2010, 12:08   #5
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от DimaX Посмотреть сообщение
Это линукс или виндовая командная строка? Сабж про пхп.
да, не заметил
тогда так:
PHP код:
<?php
system
("find dir/ -type f -exec sed -i 's/from_str/to_str/g' '{}' \;");
?>
только php должен иметь доступ к system() или аналогу
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 21.05.2010, 14:24   #6
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,228
Бабло: $247845631
По умолчанию

Цитата:
Сообщение от DimaX Посмотреть сообщение
PHP код:
<?php

$stroka_poiska 
'';//Что ищем
$stroka_zameny '';//На что меняем
$script_name '';//Имя данного скрипта, чтоб его не обработать случайно :)

set_time_limit(0);

$d opendir('.');

while((
$e readdir($d)) !== FALSE
    {
        if (
is_dir($e) || $e == $script_name)
            {
                continue;
            }
            else
            {
                
$file file_get_contents($e);
                
                if (
strpos($file$stroka_poiska) !== FALSE)
                    {
                        
$file str_replace($stroka_poiska$stroka_zameny$file);
                        echo 
'Замена произведена '.$e.'<BR>';
                    }
                    
                
$f fopen ($e'w');
                
fwrite($f$file);
                
fclose($f);
            }
    }

?>
Вроде работает
З.Ы. Немного поправил, малость неправильно работало, если с 1 же символа в файле нужная строка находилась.
для php скриптов не будет работать только
imgreen вне форума  
Старый 21.05.2010, 15:09   #7
DimaX
Senior Member
 
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
для php скриптов не будет работать только
Почему?
Я на 3 пхп файлах и проверил когда написал, вроде сработало
DimaX вне форума  
Старый 21.05.2010, 15:34   #8
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,228
Бабло: $247845631
По умолчанию

Потому что file_get_contents возвращает результат выполнения скрипта а не код. Хз как у тебя так сработало. Особые настройки php?
imgreen вне форума  
Старый 21.05.2010, 15:48   #9
jskorvin
добрый леприкон
 
Аватар для jskorvin
 
Регистрация: 05.03.2009
Сообщений: 379
Бабло: $56978
По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
Потому что file_get_contents возвращает результат выполнения скрипта а не код. Хз как у тебя так сработало. Особые настройки php?
Цитата:
file_get_contents -- Получить содержимое файла в виде одной строки
Оно не исполняется
__________________
EvaPharmacy - лучшая фарма партнерка (ICQ: 750000 Jabber: [email protected]) / Помощь детям.
jskorvin вне форума  
Старый 21.05.2010, 15:59   #10
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,228
Бабло: $247845631
По умолчанию

А у меня исполняется. Что я делаю не так?
imgreen вне форума