|
| Дата |
|
USD/RUB | 93.7196 | BTC/USD | 62117.3152 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
21.05.2010, 11:11
|
#1
|
Senior Member
Регистрация: 05.10.2009
Сообщений: 687
Бабло: $152005
|
php скрипт, подскажите
Есть папка в ней много файлов, нужен скрипт после запуска которого в этой папке, в каждом файле определённая подстрока, менялась на другую подстроку.
|
|
|
21.05.2010, 11:41
|
#2
|
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 же символа в файле нужная строка находилась.
|
|
|
21.05.2010, 11:55
|
#3
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
вот вариант покороче:
Код:
find dir/ -type f -exec sed -i 's/from_str/to_str/g' '{}' \;
|
|
|
21.05.2010, 12:02
|
#4
|
Senior Member
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
|
Цитата:
Сообщение от chesser
вот вариант покороче:
Код:
find dir/ -type f -exec sed -i 's/from_str/to_str/g' '{}' \;
|
Это линукс или виндовая командная строка? Сабж про пхп.
|
|
|
21.05.2010, 12:08
|
#5
|
автоматизирую интернеты
Регистрация: 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() или аналогу
|
|
|
21.05.2010, 14:24
|
#6
|
Senior Member
Регистрация: 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 скриптов не будет работать только
|
|
|
21.05.2010, 15:09
|
#7
|
Senior Member
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
|
Цитата:
Сообщение от imgreen
для php скриптов не будет работать только
|
Почему?
Я на 3 пхп файлах и проверил когда написал, вроде сработало
|
|
|
21.05.2010, 15:34
|
#8
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,228
Бабло: $247845631
|
Потому что file_get_contents возвращает результат выполнения скрипта а не код. Хз как у тебя так сработало. Особые настройки php?
|
|
|
21.05.2010, 15:48
|
#9
|
добрый леприкон
Регистрация: 05.03.2009
Сообщений: 379
Бабло: $56978
|
Цитата:
Сообщение от imgreen
Потому что file_get_contents возвращает результат выполнения скрипта а не код. Хз как у тебя так сработало. Особые настройки php?
|
Цитата:
file_get_contents -- Получить содержимое файла в виде одной строки
|
Оно не исполняется
|
|
|
21.05.2010, 15:59
|
#10
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,228
Бабло: $247845631
|
А у меня исполняется. Что я делаю не так?
|
|
|
|